Commit Graph

20569 Commits

Author SHA1 Message Date
John McCall
a183f762cd Address review feedback on the function-builders-on-funcs/vars patch. 2019-06-11 17:34:45 -07:00
John McCall
952eb9d8f9 Allow function-builder attributes on funcs and computed vars.
rdar://50150690
2019-06-11 17:34:45 -07:00
John McCall
83b5b2fa7d Support if-else chains on function builders.
A substantial amount of this patch goes towards trying to get at least
minimal diagnostics working, since of course I messed up the rule a few
times when implementing this.

rdar://50149837
2019-06-11 17:34:45 -07:00
Rintaro Ishizaki
04ca9752cf [CodeCompletion] Enable type name completion for param decl attribute
rdar://problem/50074177
2019-06-11 17:34:45 -07:00
Doug Gregor
b7bbf4ca1a [Function builders] Allow uses of generic function builders.
Use the opened type from the callee declaration to open up references to
generic function builders that contain type parameters. This allows general
use of generic function builders.
2019-06-11 17:34:45 -07:00
Doug Gregor
ac47c9d500 [Function builders] Diagnose unhandled closure constructs within the type checker 2019-06-11 17:34:44 -07:00
Doug Gregor
c98f01705c [DSL] Allow function builders to opt in to "if" statements.
If a function builder contains a buildIf function, then "if" statements
will be supported by passing an optional of the "then" branch.
"if" statements with an "else" statement are unsupported at present.
2019-06-11 17:34:44 -07:00
Doug Gregor
ffd160162f [DSL] Allow function builders to opt in to "do" support via buildDo(). 2019-06-11 17:34:44 -07:00
Doug Gregor
a4301cc95b [Type checker] Transform multi-statement closures via function builders.
When calling a function whose parameter specifies a function builder
with a multi-statement closure argument, transform the closure into
a single expression via the function builder. Should the result
type checker, replace the closure body with the single expression.
2019-06-11 17:34:44 -07:00
Doug Gregor
0494574706 Factor the computation of default arguments into ParameterListInfo.
Provide a place where we can capture more information about the parameters
from a declaration being called.
2019-06-11 17:34:44 -07:00
John McCall
007842261f Rework the requests for getting a parameter's function-builder type.
Turn the generic CustomAttrTypeRequest into a helper function and
introduce a FunctionBuilderTypeRequest that starts from a ParamDecl.
This has better caching characteristics and also means we only need to
do a single cache lookup in order to resolve the type in the normal path.
It also means we don't need as much parameterization in the cache.

In addition, check that the parameter has function type in the request,
not just when late-checking the attribute, and add a check that it isn't
an autoclosure.
2019-06-11 17:34:44 -07:00
John McCall
2268939f3b Underscore _functionBuilder. 2019-06-11 17:34:44 -07:00
John McCall
93b3320196 Make getFunctionBuilderType() return a Type. 2019-06-11 17:34:44 -07:00
John McCall
e1b6386f80 Add an unused request for getting the type of a custom attribute.
Includes code anticipating property delegates in part because it's
been largely stolen from Doug's PR for that.
2019-06-11 17:34:44 -07:00
John McCall
1e4f5f7750 Add @functionBuilder and check its applications to parameters. 2019-06-11 17:34:44 -07:00
Karoy Lorentey
b48175525e Merge pull request #25345 from lorentey/foundation-diff-apis
[Foundation] Bridge difference APIs between Foundation and swift stdlib
2019-06-11 11:43:10 -07:00
Slava Pestov
5d59600a53 Merge pull request #25350 from slavapestov/object-literal-expr
Convert ObjectLiteralExpr to not use tc.callWitness() or generate a SemanticExpr
2019-06-11 11:41:58 -07:00
swift-ci
0f27d604c3 Merge pull request #25076 from owenv/improve_equatable_hashable_synthesis_diags 2019-06-11 05:56:25 -07:00
Parker Schuh
823ba0bb73 Convert ObjectLiteralExpr to not use tc.callWitness() or generate a SemanticExpr.
For reference, all other literal types except dictionaries and string
interpolation have been converted over to this form.
2019-06-11 02:47:32 -07:00
Jordan Rose
cc6855b21b Merge pull request #17792 from ChristopherRogers/master
[SR-6706] Swift should complain about weak references to classes that don't support them
2019-06-10 20:02:08 -07:00
Scott Perry
b10632811f [Foundation] Bridge difference APIs between Foundation and swift stdlib
rdar://problem/51604652
2019-06-10 17:45:54 -07:00
Slava Pestov
77a6c9ebe2 Merge pull request #25191 from slavapestov/vtable-thunk-cleanup
VTable thunk cleanup
2019-06-10 17:02:54 -07:00
Xi Ge
e8a7845b83 Merge pull request #25245 from nkcsgexi/doc-filter-serailization
Doc-serialization: add a front-end option to filter out unwanted symbols
2019-06-10 16:42:12 -07:00
Jordan Rose
c62f0d186f Merge pull request #25307 from kagemiku/change-warning-message-for-defer-at-block-end
Improve warning message for defer_stmt_at_block_end
2019-06-10 16:41:14 -07:00
Christopher Rogers
0b27345d68 Swift should complain about weak references to classes that don't support them
Resolves SR-6706
2019-06-10 19:20:28 -04:00
Xi Ge
6fd332d62c Doc-serialization: skip declarations with double-underscore as name prefix
Double-underscored names suggest the symbols aren't supposed to be used by framework
clients. This patch excludes the doc-comments of these symbols in swiftdoc files.

rdar://51468650
2019-06-10 14:00:41 -07:00
Michael Gottesman
b90e413567 Merge pull request #25320 from gottesmm/pr-393856a2bc74013494a4598e46d156795de076f2
[clf] Simplify the double diamond lifetime extension for escaping swi…
2019-06-10 10:30:21 -07:00
Michael Gottesman
cf0405c7f1 [clf] Simplify the double diamond lifetime extension for escaping swift funcs -> noescape blocks.
Specifically, when we optimize conversions such as:

  Optional<@escaping () -> ()>

  ->

  Optional<@noescape () -> ()>

  ->

  Optional<@noescape @convention(block) () -> ()>

previously we were lifetime extending over the @noescape lifetime barrier by
making a copy and then putting a mark_dependence from the copy onto the original
value. This was just a quick way to tell the ownership verifier that the copy
was tied to the other value and thus should not be eliminated. The correctness
of the actual lifetime extension comes from the optimizer being conservative
around rr insts.

This commit instead changes our optimization to borrow the copied optional
value, extract the payload, and use that instead.
2019-06-09 22:04:32 -07:00
Slava Pestov
f681cbe264 SIL: Remove SILVTable::Entry::Linkage
This field would store the linkage of the original method, if it was
distinct from the linkage of a vtable thunk. It is no longer used.
2019-06-09 15:54:05 -07:00
Owen Voorhees
e273d05460 [Sema] Add notes to explain why Equatable/Hashable conformance couldn't be synthesized
If a struct/enum cannot have Equatable/Hashable conformance automatically synthesized because a member's type is not Equatable/Hashable, add a note to the existing 'does not conform' diagnostic pointing out the type that blocked synthesis.
2019-06-08 13:02:49 -07:00
Rintaro Ishizaki
a67ffadd75 Merge pull request #25296 from broadwaylamb/patch-2
[Parse] Add missing const qualifier to getSplitTokens()
2019-06-08 00:56:40 -07:00
Pavel Yaskevich
00e30dd53c Merge pull request #25291 from xedin/refactor-open-generic
[ConstraintSystem] Refactor openGeneric/openFunctionType
2019-06-07 22:42:24 -07:00
Ray Fix
9eb0ebe361 Fix for SR-10550, Help for -target option (#25311) 2019-06-07 18:03:30 -07:00
kagemiku
50f04b73a0 Improve warning message for defer_stmt_at_block_end 2019-06-07 15:48:43 -07:00
Sergej Jaskiewicz
36b2625c60 [Parse] Add missing const qualifier to getSplitTokens() 2019-06-07 12:09:55 +03:00
Mishal Shah
c2848e793f Merge pull request #25236 from apple/update-master-xcode-11-beta1
Update master to build with Xcode 11 beta, macOS 10.15, iOS 13, tvOS 13, and watchOS 6 SDKs
2019-06-06 11:22:40 -07:00
Pavel Yaskevich
ae68558dae [ConstraintSystem] Generalize and extract opening function params/result into substGenericArgs 2019-06-05 16:50:47 -07:00
Vedant Kumar
569c8afc54 [Profiler] Separate profiler instances for property inits and constructors (#25247)
Assign separate SILProfiler instances to stored property initializers
and constructors.

Starting with rdar://39460313, coverage reporting for these constructs
was bundled up into a single SILProfiler uniqued by the NominalTypeDecl.
There are two problems with doing this.

First, the shared SILProfiler is given a fake name that can't be
demangled. That breaks Xcode's reports.  Second, the relationship
between SILProfiler and SILFunction is supposed to be 1:1. Having a
shared SILProfiler muddies things a bit and requires extra bookkeeping.

rdar://47467864
2019-06-05 10:38:10 -07:00
Joe Groff
0e63852db2 Merge pull request #25240 from linux-on-ibm-z/cluster-to-apint
Basic: Use APInt to implement ClusteredBitVector
2019-06-05 10:03:32 -07:00
Pavel Yaskevich
6cdd981ee1 Merge pull request #25080 from owenv/improve_subscript_assignment_diag
[Diagnostics] Clarify diagnostic for failed type conversion in subscript assignment
2019-06-04 19:33:23 -07:00
Saleem Abdulrasool
1656a65ed4 Merge pull request #25227 from compnerd/gyb-your-silence
syntax: silence MSVC warning about unreachable (NFC)
2019-06-04 18:23:09 -07:00
Michael Munday
192bcb2007 Basic: Use APInt to implement ClusteredBitVector
Simplify the implementation of ClusteredBitVector by using an APInt
to represent the raw bits. This simplification will make it easier
to incrementally move to a representation of bit vectors that works
on both big- and little-endian machines.

This commit also removes reserve and reserveExtra from the API
since they were only used in one place and no longer have any effect
because memory allocation is now handled by the APInt class.
2019-06-04 14:05:10 +01:00
mishal_shah
1e38fc3030 Update master to build with Xcode 11 beta, macOS 10.15, iOS 13, tvOS 13, and watchOS 6 SDKs 2019-06-03 22:50:02 -07:00
Joe Groff
4ed8de10f9 Revert "Revert "Use autolinking to pull in compatibility libraries."" 2019-06-03 20:10:51 -07:00
Saleem Abdulrasool
bb2eee12b0 syntax: silence MSVC warning about unreachable (NFC)
Add a llvm_unreachable to indicate to MSVC that the switch is covered.
2019-06-03 16:50:12 -07:00
Joe Groff
a7cc3a38cc Revert "Use autolinking to pull in compatibility libraries." 2019-06-03 14:18:39 -07:00
Raj Barik
d40207743c Merge pull request #25038 from atrick/fix-specializer-leak
Fix ExistentialSpecializer to correctly cleanup storage.
2019-06-03 09:31:47 -07:00
Joe Groff
a740ee55b2 Merge pull request #25148 from jckarter/runtime-compatibility-autolink
Use autolinking to pull in compatibility libraries.
2019-06-03 08:22:49 -07:00
Doug Gregor
7fca8453b2 [SE-0258] Infer generic arguments of wrapper type from original property type
Implement the revised type inference rules that allow the type checker to
infer the generic arguments of a wrapper type from the original property type,
including in various structural positions. Fixes rdar://problem/51266744.
2019-06-02 23:38:46 -07:00
Michael Gottesman
093691a82f Add a C++ mode to .h header. 2019-06-02 17:03:41 -07:00