Commit Graph

17644 Commits

Author SHA1 Message Date
Slava Pestov
ea098b56b7 AST: Allow ConformanceLookupTable::forEachInStage() to find ExtensionDecls in the Builtin module 2023-08-09 17:42:25 -04:00
Slava Pestov
7f9a71cd15 AST: Rename ASTContext::getConformance() to getNormalConformance() 2023-08-09 17:42:25 -04:00
Slava Pestov
05ac7e36b6 AST: Fix NominalType::get() when given a BuiltinTupleDecl 2023-08-09 17:42:25 -04:00
Slava Pestov
1bccedaa5b Sema: Allow getInterfaceType() to be called on BuiltinTupleType 2023-08-09 17:42:25 -04:00
Slava Pestov
59bdf6630c Sema: Move tuple conformance diagnostic to TypeCheckDeclPrimary.cpp 2023-08-09 17:42:25 -04:00
Slava Pestov
1b8e9a2964 SIL: Fixes for tuple conformances 2023-08-09 17:42:25 -04:00
Slava Pestov
e7a8fdde22 Mangler: Fix de/remangling of Builtin.TheTupleType 2023-08-09 17:42:25 -04:00
Hamish Knight
35a98f3828 [ASTGen] Allow querying of enabled features
For now this is using C interop, we ought to be
using C++ interop, but that's a much bigger
change.
2023-08-09 19:35:50 +01:00
Allan Shortlidge
c3af951f38 AST: Get SPI status of PatternBindingDecl from anchoring VarDecl.
For property declarations, the `@_spi` attribute is attached to the VarDecl AST
node, rather than the PatternBindingDecl AST node, so the `isSPI()` query
should take this into account. Failing to do so caused the availability checker
to erroneously require that `@_spi` properties of types in `-library-level api`
libraries have availability annotations.

Resolves rdar://113587321.
2023-08-08 16:06:36 -07:00
swift-ci
d614d29c36 Merge pull request #67666 from ahoppen/ahoppen/kill-syntax-support
[AST] Remove gyb_syntax_support
2023-08-08 10:38:30 -07:00
Hamish Knight
1e3dd5c50c [AST] Improve source range info for TapExpr
Previously we would only base the start loc on the
`SubExpr`, but that isn't set until CSApply. Change
it to take both `SubExpr` and `Body`'s source range
into account.

Also tighten up the invariant that a TapExpr must
be created with a non-null BraceStmt.
2023-08-08 18:08:51 +01:00
Allan Shortlidge
cf5888a149 NFC: Refactor conveniences for filtering out unavailable decls.
Introduce `AvailableDuringLoweringDeclFilter` which can be composed with
`OptionalTransformRange` to implement iterators that filter out unavailable
decls.
2023-08-07 18:59:49 -07:00
Egor Zhdan
6261ee2bb5 Merge pull request #67772 from apple/egorzhdan/cxx-vector-proto
[cxx-interop] Add `CxxVector` protocol
2023-08-07 19:25:57 +01:00
Egor Zhdan
4acf9c8cf4 [cxx-interop] Add CxxVector protocol
This makes it possible to initialize `std::vector` from a Swift Sequence. This also conforms C++ vectors to `ExpressibleByArrayLiteral`, making it possible, for instance, to pass a Swift array to a C++ function that takes a vector of strings as a parameter.

rdar://104826995
2023-08-07 17:12:12 +01:00
Allan Shortlidge
cb7982d8d5 Merge pull request #67761 from tshortli/ast-unavailable-decl-queries
NFC: Hoist queries for unavailable decl optimizations into the AST library
2023-08-06 10:01:27 -07:00
Tony Allevato
b2fd3eb754 Merge pull request #67707 from allevato/no-u8-prefixes 2023-08-05 21:24:05 -04:00
Slava Pestov
6ae2a1deee Merge pull request #67739 from slavapestov/var-decl-type-in-context
AST: Rename VarDecl::getType() to VarDecl::getTypeInContext()
2023-08-04 21:44:22 -04:00
Slava Pestov
6c5074f6e8 Merge pull request #67749 from slavapestov/tuple-conformance-test
AST/Sema: Fix a couple of minor issues with tuple conformances and add a new test case
2023-08-04 21:43:53 -04:00
Allan Shortlidge
ca8bf981a4 NFC: Hoist queries for unavailable decl optimizations into the AST library.
Moving the query implementation up to the AST library from SIL will allow
conveniences to be written on specific AST element classes. For instance, this
will allow `EnumDecl` to expose a convenience that enumerates element decls
that are available during lowering.

Also, improve naming and documentation for these queries.
2023-08-04 17:39:26 -07:00
Alexis Laferrière
ae76f518c7 Merge pull request #67746 from xymus/spi-private-imports
[Sema] @_private imports brings is all SPI of the imported module
2023-08-04 14:42:26 -07:00
Tony Allevato
300a952ede Replace u8 string literal prefixes with SWIFT_UTF8 macro.
In C++20, `u8` literals create values of type `char8_t` instead of
`char`, and these can't be implicitly converted. This macro
mitigates the difference and allows the same code to compile under
C++14/17 modes and C++20, preserving the `char` type while ensuring
that the text is interpreted as UTF-8.
2023-08-04 16:41:36 -04:00
Slava Pestov
979acd9025 AST/Sema: Fix a couple of minor issues with tuple conformances and add a new test case
The progress on variadic generics means we can now implement useful
witnesses in a tuple conformance. The feature remains very incomplete
though, today we crash in SILGen.
2023-08-04 16:33:47 -04:00
Slava Pestov
9ebb5f2e03 AST: Rename VarDecl::getType() to VarDecl::getTypeInContext()
This is a futile attempt to discourage future use of getType() by
giving it a "scary" name.

We want people to use getInterfaceType() like with the other decl kinds.
2023-08-04 14:19:25 -04:00
Alexis Laferrière
69493d1f4a [Sema] @_private imports brings is all SPI of the imported module
Within one module, SPI decls are always visible. Conceptually we want
the same behavior for `@_private` imports where the client pretends it's
part of the same module.

rdar://81240984
2023-08-04 10:30:36 -07:00
Slava Pestov
9e9cbc1e95 AST: Remove unprintable character from ModuleNameLookup.cpp 2023-08-03 16:05:59 -04:00
Doug Gregor
300d04a2d4 Merge pull request #67642 from DougGregor/lazy-type-refinement-context
Eliminate Observable circular reference errors via lazier TypeRefinementContext building
2023-08-03 12:47:19 -07:00
Tony Allevato
b59f5c7c02 Merge pull request #67683 from allevato/c++20-tweaks
[Code Health] Improve eventual C++20 support.
2023-08-03 13:24:06 -04:00
Anton Korobeynikov
03334a8f92 [AutoDiff] Generalize handling of semantic result parameters (#67230)
Introduce the notion of "semantic result parameter". Handle differentiation of inouts via semantic result parameter abstraction. Do not consider non-wrt semantic result parameters as semantic results

Fixes #67174
2023-08-03 09:33:11 -07:00
Alejandro Alonso
f840191e14 Emit call to old initialization function for older OSes
Add test

Update raw_layout.swift

Update raw_layout.swift
2023-08-03 09:30:37 -07:00
Alex Lorenz
c4d6515d99 Merge pull request #67668 from hyp/eng/reverse-interop-simd-nested-fixes
[interop][SwiftToCxx] simd and nested type fixes
2023-08-03 06:36:16 -07:00
Doug Gregor
37959de29e Establish type refinement contexts for pattern binding decls directly
The type refinement context builder had a bunch of logic to try to
model type refinement contexts for the first variable declaration that
shows up within a pattern binding declaration. Instead, model this
more syntactically by creating a type refinement context for the
pattern binding declaration itself. This both addresses a regression
in the handling of `if #available` within a closure that's part of an
initializer, and fixes a bug in the same area where similar code has
explicit availability annotations.
2023-08-02 15:07:09 -07:00
Doug Gregor
50ca096cd8 Make VarDecl::isLayoutExposedToClients check property wrappers more lazily
The check for "has property wrappers" as part of determining whether the
layout of a variable is exposed to clients can trigger reference
cycles. Push this check later, which eliminates these cycles for types
that aren't frozen/fixed-layout.

This is a hack, not a real fix, but it eliminates the cyclic
references observed in rdar://112079160.
2023-08-02 15:07:08 -07:00
Doug Gregor
3079f3d074 [Type refinement context] Lazily expand TRCs for pattern bindings
Eager expansion of type refinement contexts (TRCs) for variables
within pattern binding declarations is causing cyclic references in
some places involving macros. Make this expansion lazy, triggered by
walking into these pattern binding declarations as part of (e.g.)
availability queries.

Another step toward fixing the cyclic references in rdar://112079160.
2023-08-02 15:07:07 -07:00
Alex Lorenz
97c25ae854 [interop][SwiftToCxx] nested types are not yet supported so do not emit references to them 2023-08-02 13:03:05 -07:00
Tony Allevato
79935f9720 Add explicit ctors for aggregation for types that default or delete ctors.
In C++20, types that declare or delete their default/copy/move constructors are no longer aggregates, so the aggregate uses of these types will not compile under C++20. Adding them fixes this, without affecting older language modes.
2023-08-02 14:22:32 -04:00
Konrad `ktoso` Malawski
95920b2570 [Concurrency] Fix init task group with flags availability
resolves rdar://112469076
2023-08-02 12:02:27 +09:00
Alex Hoppen
ef8e4ac0f3 [AST] Remove gyb_syntax_support
We are no longer using these Python files to generate anything in SwiftSyntax. We can just remove them and instead commit the generated `.def` files.
2023-08-01 17:20:14 -07:00
Allan Shortlidge
7c0a9cc92e Merge pull request #67636 from tshortli/enum-unavailable-element-derived-equatable-hashable
Sema: Fix unavailable enum element cases in derived hashable/equatable impls
2023-08-01 16:22:28 -07:00
Pavel Yaskevich
bb135181bd Merge pull request #67625 from xedin/enable-init-accessors-feature
[Frontend/NFC] SE-0400: Enable `InitAccessors` feature by default
2023-08-01 15:54:43 -07:00
Allan Shortlidge
8079d9cf45 AST: Fix whitespace for switch statements under -print-ast.
No test changes because the tests for `-print-ast` don't match whitespace.
2023-07-31 21:27:46 -07:00
Alex Lorenz
0eed1a944c [cxx-interop] correctly add and lookup enumerators added to enums that correspond to namespaces
Fixes https://github.com/apple/swift/issues/67604
2023-07-31 18:57:50 -07:00
Pavel Yaskevich
2a0651e8b0 [Frontend/NFC] SE-0400: Enable InitAccessors feature by default 2023-07-31 13:18:59 -07:00
Pavel Yaskevich
a22bd2741e Merge pull request #67593 from xedin/textual-sil-assign_or_init
[SIL] InitAccessors: Support `assign_or_init` in textual SIL
2023-07-31 09:11:44 -07:00
Joe Groff
16c59fa12c Merge pull request #67588 from jckarter/raw-layout-multi-file
Requestify raw layout "like" type resolution.
2023-07-31 08:38:49 -07:00
Joe Groff
56f2ae6b08 Requestify raw layout "like" type resolution.
This ensures it's resolved on demand even across files. rdar://112998213
2023-07-28 13:46:50 -07:00
Joshua Turcotti
2eade1d1b5 Merge pull request #67511 from JTurcotti/tweaks
[SendNonSendable] Assorted Bugfixes and Tweaks
2023-07-28 09:24:36 -07:00
Pavel Yaskevich
1ece483119 [AST] ASTPrinter: Print init accessor for SIL 2023-07-28 08:32:37 -07:00
Pavel Yaskevich
cabc54546d [AST] InitAccessors: Implement @storageRestrictions attribute printing 2023-07-28 08:32:37 -07:00
Slava Pestov
50b8c347eb Merge pull request #67565 from slavapestov/fix-issue67322
TypeDecoder: Push one-element tuple unwrapping down into createTupleType() implementations
2023-07-28 09:32:03 -04:00
jturcotti
bb2f3c011e rename DeferredSendableChecking pass to SendNonSendable pass, handle more instructions such as try_apply and begin_apply, and fix bugs 2023-07-27 16:45:29 -07:00