Slava Pestov
3992b18e0b
AST: Move some code from ASTPrinter.cpp to ASTDumper.cpp
2022-08-23 11:12:01 -04:00
Slava Pestov
5c32f2136e
AST: Introduce RequirementKind::SameCount
2022-08-23 11:12:00 -04:00
Slava Pestov
7a335d6c66
AST: Introduce @tuple (T) syntax for one-element tuples in SIL mode
2022-08-23 11:12:00 -04:00
Slava Pestov
d9a3f2e5ce
AST: Stop calling getAllConformances() on protocols
2022-08-23 00:03:36 -04:00
Slava Pestov
e923e20797
AST: Print @_typeSequence in the ASTPrinter
2022-08-10 23:44:36 -04:00
Angela Laar
329d5846bc
Merge pull request #60431 from angela-laar/enable-existential-any
...
Enforce existential `any` behind a feature flag
2022-08-08 20:16:53 -07:00
Michael Gottesman
c10c0f6285
[move-function] Add a new context sensitive move expr.
...
It doesn't do anything yet.
2022-08-08 12:50:41 -07:00
Slava Pestov
d222ac5f6e
Sema: New syntax for @opened archetypes in textual SIL
...
The old syntax was
@opened("UUID") constraintType
Where constraintType was the right hand side of a conformance requirement.
This would always create an archetype where the interface type was `Self`,
so it couldn't cope with member types of opened existential types.
Member types of opened existential types is now a thing with SE-0309, so
this lack of support prevented writing SIL test cases using this feature.
The new syntax is
@opened("UUID", constraintType) interfaceType
The interfaceType is a type parameter rooted in an implicit `Self`
generic parameter, which is understood to be the underlying type of the
existential.
Fixes rdar://problem/93771238.
2022-08-07 19:03:46 -04:00
Angela Laar
0c36d817e8
[Frontend] Add flag to enable existential any
2022-08-04 17:45:57 -07:00
Pavel Yaskevich
3e65a7cab0
Merge pull request #60065 from xedin/result-builder-ast-transform-under-flag
...
[TypeChecker] Implement result builder transform via AST modification under a flag
2022-08-02 16:22:01 -07:00
Pavel Yaskevich
3167182871
[AST] Add TypeJoin expression
...
This expression represents a variable and a set of expressions
that are type-checked together to form a type of the variable.
2022-08-02 11:03:27 -07:00
Pavel Yaskevich
45122f55d0
[Frontend] Add an option to enable new result builder transform
2022-08-02 11:03:26 -07:00
Hamish Knight
9da53193da
[AST] Remove ParameterTypeFlags from ParenType and TupleType
...
The last clients that relied on stashing parameter
type flags on these types are now gone.
2022-08-02 13:56:32 +01:00
Jonathan Penn
be5babf28c
Add experimental flag to turn on just opaque type erasure ( #60172 )
...
This was already enabled as part of `-enable-implicit-dynamic` but this
new flag allows turning on opaque type erasure all by itself whether or
not `dynamic` is added explicitly.
rdar://97375478
2022-07-22 23:43:22 -04:00
Doug Gregor
28a0f83590
Turn @Sendable completion handlers into an experimental feature.
...
`@Sendable` on completion handlers imported from Objective-C has been
implemented for a while, but has been disabled in production builds
due to a number of problems we've encountered with rolling it out.
Introduce an experimental feature for `@Sendable` completion handlers
so we can iterate on this more before we enable it by default.
Part of rdar://85569247, which will cover re-landing this feature.
2022-07-18 12:29:28 -07:00
Nate Chandler
34c08b8344
[TaskToThread] Add Task.runInline.
...
The new intrinsic, exposed via static functions on Task<T, Never> and
Task<T, Error> (rethrowing), begins an asynchronous context within a
synchronous caller's context. This is only available for use under the
task-to-thread concurrency model, and even then only under SPI.
2022-07-08 08:44:18 -07:00
Holly Borla
dbc8307b64
Merge pull request #59829 from hborla/enable-bound-generic-extensions
...
[SE-0361] Enable bound generic extensions.
2022-07-05 17:38:59 -07:00
Michael Gottesman
8f3fe63fed
[no-implicit-copy] Rename SILMoveOnlyType -> SILMoveOnlyWrappedType.
...
Since I am beginning to prepare for adding real move only types to the language,
I am renaming everything that has to do with copyable types "move only wrapped"
values instead of move only. The hope is this reduces/prevents any confusion in
between the two.
2022-07-01 17:26:13 -07:00
Holly Borla
01d46340e1
[SE-0361] Remove the feature flag for bound generic extensions.
2022-06-30 17:24:38 -07:00
Holly Borla
27ae04e77c
[ASTPrinter] Don't desugar AnyObject existentials in Swift interfaces.
2022-06-17 18:29:17 -07:00
Holly Borla
ac36e2b580
[ASTPrinter] Restructure the code for printing metatype instance types.
2022-06-17 18:29:17 -07:00
Holly Borla
429488f6c9
[Sema] Use ExistentialType for Any and AnyObject.
2022-06-17 18:29:15 -07:00
Rintaro Ishizaki
9507315c6b
Merge pull request #58973 from rintaro/ide-primaryassociatedtype-rdar93275458
...
[SourceKit] Update for primary associated types
2022-06-08 11:27:42 -07:00
Xi Ge
e46b5f5966
ABIChecker: for decls with @_originallyDefinedIn, use original module names in ABI descriptors
...
rdar://93615410
2022-06-03 22:41:43 -07:00
Michael Gottesman
c66061a783
[moveOnly] Add a new SIL specific AST type called SILMoveOnly.
...
It can only be used in SIL contexts to express that a wrapped type is
MoveOnly.
2022-06-03 11:27:16 -07:00
Holly Borla
0ba655ee28
[ASTPrinter] Simplify archetype printing by visiting the interface type.
2022-06-02 13:10:38 -07:00
Doug Gregor
6267513dab
Add experimental feature for AdditiveArithmetic derived conformances
2022-05-30 21:28:32 -07:00
Doug Gregor
22ccb3fc3f
Introduce experimental features for autodiff options
2022-05-30 21:26:17 -07:00
Doug Gregor
2598aa5405
Add experimental feature for bound generic extensions
2022-05-30 21:09:33 -07:00
Doug Gregor
3cf576da23
Refactor bare slash regex literals as a future feature
2022-05-30 08:33:46 -07:00
Doug Gregor
72c92892fd
Introduce feature ForwardTrailingClosures for SE-0286.
...
Replace the "Swift version 6" checks for forward-scanning trailing
closure matching with checks for this new feature.
2022-05-30 08:32:56 -07:00
Doug Gregor
2fbe202146
Introduce FUTURE_FEATURE definitions for features staged in Swift 6.
...
Using the same feature set logic as experimental features, provide
feature names for "future" features, which are changes that will
become available with Swift 6. Use the feature check when determining
whether to implementation the feature instead of a language version
check, and map existing flags for these features (when available) over
to the feature set.
As an internal implementation detail, this makes it easier to reason
about when specific features are enabled (or not). If we decide to go
with piecemeal adoption support for features, it can provide an
alternative path to enabling features that feeds this mechanism.
2022-05-30 08:32:56 -07:00
Doug Gregor
8da6caeccd
Add experimental feature for type witness system inference
2022-05-27 12:34:53 -07:00
Doug Gregor
333ae3f830
Add experimental feature for one-way closure parameters
2022-05-27 11:52:29 -07:00
Doug Gregor
b012270fca
Adopt experimental-feature infrastructure for move-only feature
2022-05-26 14:21:26 -07:00
Doug Gregor
37dbf23ba2
Adopt experimental feature approach for flow-sensitive concurrency captures
2022-05-26 13:56:21 -07:00
Doug Gregor
0de5d7818d
Make named opaque types an experimental feature
2022-05-26 13:44:08 -07:00
Doug Gregor
6d82448dc8
Add -enable-experimental-feature X for experimental features.
...
Experimental features can only be enabled in non-production (+Asserts)
builds. They can be detected with `hasFeature` in the same manner as
"future" features.
The `-enable-experimental-feature X` flag will also look for future
features by that name, so that when an experimental feature becomes an
accepted future feature, it will still be enabled in the same manner.
Switch variadic generics over to this approach, eliminating the
specific LangOption for it.
2022-05-26 11:50:39 -07:00
QuietMisdreavus
baa4123bd7
use getConformingProtocols when printing opaque generic types ( #58991 )
...
* use getConformingProtocols when printing opaque generic types
rdar://93610106
2022-05-24 18:29:14 -06:00
Holly Borla
38dfb99031
[ASTPrinter] Put desugaring constraints for existential types behind a
...
PrintOptions flag that is only enabled for interface printing.
2022-05-23 22:15:17 -07:00
Holly Borla
e9c14cd88b
[ASTPrinter] Print the desugared constraint type following the 'any'
...
keyword.
2022-05-23 19:43:51 -07:00
Rintaro Ishizaki
8bda524cd2
[SourceKit] Update for primary associated types
...
* InterfaceGen reports a primary associated type as a reference to the
'associatedtype' declaration
* CursorInfo on a primary associated type returns information of the
'associatedtype' declaration
rdar://93275458
2022-05-18 17:16:49 -07:00
Arnold Schwaighofer
e3b715bc2a
Merge pull request #58760 from aschwaighofer/swiftinterface_print_specialize_with_targetFunction
...
swiftinterface: print _specialize functions with targetFunction parameter in .swiftinterface
2022-05-10 19:45:30 -07:00
Allan Shortlidge
e0e748c35a
ModuleInterface: Print existential any in swiftinterfaces since any is required for protocols with associated types in 5.7.
...
Resolves rdar://92976269
2022-05-09 14:10:07 -07:00
Arnold Schwaighofer
7bfa01a817
swiftinterface: print _specialize functions with targetFunction parameter in .swiftinterface
...
If we have an internal function with a `_specialize` attribute that has
a `targetFunction:` parameter we want the function to appear in the
.swiftinterface file such that the exported specialization can be picked up by
the compiler.
2022-05-09 10:08:52 -07:00
Joe Groff
d2fad71328
Merge pull request #42589 from jckarter/begin-partial-apply-simplification-pass
...
[SIL] Initial work on PartialApplySimplification pass
2022-05-02 10:20:39 -07:00
Josh Soref
81d3ad76ac
Spelling ast ( #42463 )
...
* spelling: accessor
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: accommodates
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: argument
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: associated
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: availability
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: available
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: belongs
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: bookkeeping
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: building
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: clazz
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: clonable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: closure
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: concatenated
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: conformance
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: context
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: conversion
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: correspondence
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: declarations
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: declared
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: defining
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: delayed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: dependency
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: deployed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: descendants
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: diagnose
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: diagnostic
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: equitable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: evaluation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: exclusivity
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: existence
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: existential
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: explicit
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: expressed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: for
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: foreign
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: function
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: identifier
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: implicit
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: indices
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: information
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: instance
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: interchangeable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: interface
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: introduced
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: invalid
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: kind-in
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: least
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: library
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: location
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: namespace
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: necessary
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: nonexistent
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: not
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: number
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: obtains
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: occurs
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: opaque
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: overridden
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: parameter
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: precede
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: preceding
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: property
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: protocol
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: qualified
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: recognized
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: recursively
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: references
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: relaxing
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: represented
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: request
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: requirement
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: requirements
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: retrieve
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: returned
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: satisfied
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: satisfy
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: scanner
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: siblings
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: simplified
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: something
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: source
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: specializations
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: specially
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: statement
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: stripped
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: structure
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: substitution
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: the
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transform
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transformed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transitively
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transparent
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: typecheck
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: unknown
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: unlabeled
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: unqualified
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: whether
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: with
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: scanner
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
Co-authored-by: Josh Soref <jsoref@users.noreply.github.com >
2022-04-21 12:57:16 -07:00
Joe Groff
1e2bda9ea0
Extensions to SILBoxType to represent captures.
...
- Add a `[reflection]` bit to `alloc_box` instructions, to indicate that a box
should be allocated with reflection metadata attached.
- Add a `@captures_generics` attribute to SILLayouts, to indicate a type layout
that captures the generic arguments it's substituted with, meaning it can
recreate the generic environment without additional ABI-level arguments, like
a generic partial application can.
2022-04-21 12:51:46 -07:00
Allan Shortlidge
cc0627a8cb
Merge pull request #42276 from tshortli/global-actor-broken-swift-interface
...
ModuleInterface: Wrap synthesized extensions in swiftinterfaces with feature guards
2022-04-14 15:08:11 -07:00
Allan Shortlidge
f27005b8d0
ModuleInterface: When printing synthesized extensions, we need to be sure to guard them with required features if applicable. Not doing so can result in broken interfaces that do not typecheck because, for instance, a conformance can refer to a nominal type that is only declared when certain features are enabled.
...
Also, fix a typo where `#elsif` was printed into interfaces instead of `#elseif`.
Resolves rdar://91509673
2022-04-12 17:53:59 -07:00