Commit Graph

21519 Commits

Author SHA1 Message Date
Anthony Latsis
64e8976261 [NFC] AST: Define NumDiagIDs instead of redefining the enum 2025-01-09 14:09:46 +00:00
Anthony Latsis
eb428bea31 Merge pull request #78398 from AnthonyLatsis/micronecta-scholtzi
DiagnosticEngine: Fix diagnostic groups behavior for wrapped diagnostics
2025-01-09 11:46:24 +00:00
Allan Shortlidge
70a2363b97 AST: Introduce new conveniences for synthesizing AvailabilityAttrs.
This makes intent clearer at the call site and removes a lot of explicit uses
of PlatformAgnosticAvailabilityKind, which is going away.
2025-01-08 19:59:47 -08:00
Alejandro Alonso
c5a641b764 WIP: Import C arrays as Vector with flag 2025-01-08 10:37:16 -08:00
Alejandro Alonso
0f30cdfb31 Allow Builtin.emplace to have typed throws 2025-01-08 10:37:16 -08:00
Alejandro Alonso
b9487d132a Cache the value type of a generic param when cloning 2025-01-08 10:37:15 -08:00
Alejandro Alonso
61702fb813 Implement Vector literals 2025-01-08 10:35:55 -08:00
Allan Shortlidge
9edd9eed9e AST: Finish adopting SemanticAvailableAttr in AvailabilityInference utilities. 2025-01-08 08:17:27 -08:00
Allan Shortlidge
a882ac6e65 AST: Make some ASTContext parameters const-correct. 2025-01-08 08:17:27 -08:00
Allan Shortlidge
ddf8f258b8 AST: Adopt SemanticAvailableAttr in referencesSPIPlatform(). 2025-01-08 08:17:27 -08:00
Allan Shortlidge
7ed123a126 AST: Adopt SemanticAvailableAttr in Decl::getIntroducedOSVersion(). 2025-01-08 08:17:27 -08:00
Allan Shortlidge
100a794ffd AST: Adopt SemanticAvailableAttr in getAvailabilityConditionVersionSourceRange(). 2025-01-08 08:17:27 -08:00
Allan Shortlidge
05d342eb98 AST: Remove AvailableAttr::hasPlatform().
Use SemanticAvailableAttr::isPlatformSpecific() instead.
2025-01-08 08:17:27 -08:00
Allan Shortlidge
5058534805 AST: Remove AvailableAttr::prettyPlatformString(). 2025-01-08 08:17:27 -08:00
Allan Shortlidge
141a6119db AST: Remove AvailableAttr::platformString(). 2025-01-08 08:17:26 -08:00
Allan Shortlidge
c2e8e3060e AST: Remove AvailableAttr::isActivePlatform(). 2025-01-08 08:17:26 -08:00
Allan Shortlidge
b4e2cff9f9 AST: Introduce SemanticAvailableAttr::isSPI(). 2025-01-08 08:17:26 -08:00
elsh
c03abed00d Package optimization allows bypassing resilience, but that assumes the memory layout of the
decl being accessed is correct. When this assumption fails due to a deserialization error
of its members, the use site accesses the layout with a wrong field offset, resulting in
UB or a crash. The deserialization error is currently not caught at compile time due to
LangOpts.EnableDeserializationRecovery being enabled by default to allow for recovery of some
of the deserialization errors at a later time. In case of member deserialization, however,
it's not necessarily recovered later on.

This PR tracks whether member deserialization had an error by recursively loading members and
checking for deserialization error, and fails and emits a diagnostic. It provides a way to
prevent resilience bypassing when the deserialized decl's layout is incorrect.

Resolves rdar://132411524
2025-01-07 21:51:49 -08:00
Artem Chikin
74883b389a Merge pull request #78075 from artemcm/ModuleCacheSerializeUpToSpeed
[Dependency Scanning] Restore functionality of a binary serialization format of the dependency scanner state/cache
2025-01-07 15:51:02 -08:00
Anthony Latsis
901d566e78 DiagnosticEngine: Fix diagnostic groups behavior for wrapped diagnostics 2025-01-07 20:29:07 +00:00
Allan Shortlidge
188ed0e029 AST: Adopt SemanticAvailableAttr more completely in AST printing. 2025-01-07 07:31:13 -08:00
Allan Shortlidge
0421835b12 AST: Adopt SemanticAvailableAttr in availability attribute inference. 2025-01-07 07:31:13 -08:00
Allan Shortlidge
dcfe563294 AST: Remove AvailabilityInference::availableRangeAndAttr() 2025-01-07 07:31:13 -08:00
Allan Shortlidge
efa1afff11 AST: Introduce SemanticAvailableAttr::getIntroducedRange().
It replaces the overload of AvailabilityInference::availableRange() that takes
an AvailableAttr.
2025-01-07 07:31:12 -08:00
Allan Shortlidge
f1d0885458 AST: Adopt SemanticAvailableAttr in AvailabilityConstraint. 2025-01-07 07:31:12 -08:00
Allan Shortlidge
4ed62e3154 AST: Introduce Decl::getAvailableAttrForPlatformIntroduction().
It replaces `AvailabilityInference::attrForAnnotatedAvailableRange()`.
2025-01-07 07:31:12 -08:00
Hamish Knight
33bff48e92 Merge pull request #78367 from hamishknight/in-context
[Sema] Remove RecontextualizeClosures
2025-01-07 09:43:27 +00:00
Ian Anderson
87d6979dae Merge pull request #78303 from ian-twilightcoder/clang-importer-search-paths
[ClangImporter] clang's -iframework comes before builtin usr/local/include, but Swift's -Fsystem comes after
2025-01-06 13:05:25 -08:00
Rintaro Ishizaki
660a2ea39a Merge pull request #78335 from rintaro/revert-revert-77140-swift-lexical-lookup-validation
Reapply "[SwiftLexicalLookup] New unqualified lookup implementation validation"
2025-01-06 09:12:45 -08:00
Artem Chikin
7049c5bfea [Dependency Scanning] Introduce a new constructor for dummy source modules
Instead of passing in a bunch of dummy/empty data.
2025-01-06 09:09:32 -08:00
Artem Chikin
6fdb788b7e [Dependency Scanning] Add Link Libraries to the dependency scanner cache serialization format 2025-01-06 09:09:31 -08:00
Slava Pestov
2d17294d73 Merge pull request #78301 from slavapestov/remove-one-way-constraints
Sema: Remove ConstraintKind::OneWayBindParam and ConstraintKind::OneWayEqual
2025-01-05 10:38:14 -05:00
Allan Shortlidge
d0f63a0753 AST: Split Availability.h into multiple headers.
Put AvailabilityRange into its own header with very few dependencies so that it
can be included freely in other headers that need to use it as a complete type.

NFC.
2025-01-03 18:36:04 -08:00
Alex Hoppen
40b91aa97a Share logic to load dynamic libraries between SourceKit plugins and macro plugins 2025-01-03 16:23:16 +01:00
Joe Groff
5c4406b5e8 Add an @_addressableForDependencies type attribute.
This attribute makes it so that a parameter of the annotated type, as well as
any type structurally containing that type as a field, becomes passed as
if `@_addressable` if the return value of the function has a dependency on
the parameter. This allows nonescapable values to take interior pointers into
such types.
2025-01-02 21:33:51 -08:00
Michael Gottesman
5d4239af57 [concurrency] Add new isolation kind CallerIsolationInheriting.
Right now it is basically a version of nonisolated beyond a few simple cases
like constructors/destructors where we are pretty sure we want to not support
this.

This is part of my bringup strategy for changing nonisolated/unspecified to be
caller isolation inheriting.
2025-01-02 13:18:30 -08:00
Michael Gottesman
328629e7fa [concurrency] Add feature NonIsolatedAsyncInheritsIsolationFromContext.
rdar://125193256
2025-01-02 13:18:29 -08:00
Michael Gottesman
b2a4f7e3cc [sil] Add to SIL and SILGen the ability to emit/represent implicit parameters.
I need this today to add the implicit isolated parameter... but I can imagine us
adding more implicit parameters in the future, so it makes sense to formalize it
so it is easier to do in the future.
2025-01-02 13:18:11 -08:00
Hamish Knight
0b6ab9a866 Merge pull request #78400 from hamishknight/visit-loc
[AST] Walk into LocatableType in TypeWalker
2025-01-02 20:18:14 +00:00
Doug Gregor
7d6e3776ba Merge pull request #78332 from DougGregor/strict-safety-improvements
Strict safety improvements
2025-01-02 08:25:02 -08:00
Hamish Knight
4e33cef20c [AST] Walk into LocatableType in TypeWalker
Make sure we walk into the underlying type for
LocatableType.
2025-01-02 15:02:11 +00:00
Anthony Latsis
9dad512515 Merge pull request #78356 from AnthonyLatsis/tuber-melanosporum
Sema: Minor QoI improvements for existential `any` diagnosis
2025-01-02 11:58:34 +00:00
Hamish Knight
af9e0c1698 [AST] Update DeclContext parent in Decl::setDeclContext
If the decl itself is a DeclContext, make sure to
update its parent too.
2024-12-27 14:44:56 +00:00
Doug Gregor
d593442cc4 Add module trace information for strict memory safety
Extend the module trace format with a field indicating whether a given
module, or any module it depends on, was compiled with strict memory
safety enabled. This separate output from the compiler can be used as
part of an audit to determine what parts of Swift programs are built
with strict memory safety checking enabled.
2024-12-24 12:27:35 -08:00
Ian Anderson
cdb42c3535 [ClangImporter] clang's -iframework comes before builtin usr/local/include, but Swift's -Fsystem comes after
When Swift passes search paths to clang, it does so directly into the HeaderSearch. That means that those paths get ordered inconsistently compared to the equivalent clang flag, and causes inconsistencies when building clang modules with clang and with Swift. Instead of touching the HeaderSearch directly, pass Swift search paths as driver flags, just do them after the -Xcc ones.

Swift doesn't have a way to pass a search path to clang as -isystem, only as -I which usually isn't the right flag. Add an -Isystem Swift flag so that those paths can be passed to clang as -isystem.

rdar://93951328
2024-12-23 22:15:52 -08:00
Anthony Latsis
56e2e19707 AST: Make HasSelfOrAssociatedTypeRequirementsRequest evaluate to false on cycle
Because we will have considered all the protocols in a cyclic hierarchy
by the time the cycle is hit.
2024-12-23 21:56:22 +00:00
Slava Pestov
74f8960bd8 Sema: Remove OneWayExpr and Builtin.one_way 2024-12-21 00:42:13 -08:00
Doug Gregor
5b90b8851a Generalize protocol conformance options spelled via attribute and incorporate @unsafe
Protocol conformances have a handful attributes that can apply to them
directly, including @unchecked (for Sendable), @preconcurrency, and
@retroactive. Generalize this into an option set that we carry around,
so it's a bit easier to add them, as well as reworking the
serialization logic to deal with an arbitrary number of such options.

Use this generality to add support for @unsafe conformances, which are
needed when unsafe witnesses are used to conform to safe requirements.
Implement general support for @unsafe conformances, including
producing a single diagnostic per missing @unsafe that provides a
Fix-It and collects together all of the unsafe witnesses as notes.
2024-12-20 23:16:23 -08:00
Augusto Noronha
70578424ca Merge pull request #78328 from augusto2112/fix-orig-def-type-in-func
[DebugInfo] Fix debug info round tripping of types inside functions
2024-12-20 20:50:25 -08:00
Augusto Noronha
398ded57f4 Remove hardcode to emit types in CompilerSwiftSyntax with ABI mod name
Now that mangling for the debugger respects originally defined in, this
is not needed anymore.
2024-12-20 16:58:53 -08:00