Commit Graph

46165 Commits

Author SHA1 Message Date
Doug Gregor
d6c020d843 Diagnose 'unsafe' within explicit references to types in expressions 2025-01-11 12:43:43 -08:00
Doug Gregor
446474499a Diagnose unsafe sequences in the for..in loop
The `unsafe` goes on the sequence expression, e.g.,

    for x in unsafe mySequence { ... }
2025-01-11 12:43:42 -08:00
John McCall
11ff5b4348 Merge pull request #78576 from rjmccall/demangle-sending-result-with-function-isolation
Fix the demangling of sending result types when combined with isolation
2025-01-11 12:35:55 -05:00
Ellie Shin
727fb8c32d Merge pull request #78258 from swiftlang/elsh/disallow-bypass-deser-check
Package CMO: add deserialization checks to ensure correct memory layout
2025-01-11 05:40:49 -08:00
Allan Shortlidge
393ad9872a Merge pull request #78541 from tshortli/available-attr-remodel
AST: Refactor `AvailableAttr` representation to use `AvailabilityDomain`
2025-01-11 02:39:27 -08:00
Doug Gregor
ede7bfe1e8 Merge pull request #78554 from DougGregor/unsafe-effect 2025-01-10 23:51:29 -08:00
Meghana Gupta
00b9dd58c5 Merge pull request #78557 from meg-gupta/fixcse
Look through forwarding instructions while querying ownership root
2025-01-10 19:45:45 -08:00
Allan Shortlidge
c0e01dcfee AST: Remove AvailableAttr::getPlatform().
I can't believe it's really happening.
2025-01-10 19:18:42 -08:00
Allan Shortlidge
51aaacceb7 AST: Remove AvailableAttr::getPlatformAgnosticAvailability(). 2025-01-10 19:18:42 -08:00
Allan Shortlidge
2a1679742c AST: Use AvailabilityDomain and Kind directly in the AvailableAttr representation. 2025-01-10 18:43:12 -08:00
Allan Shortlidge
11abffb2f4 AST: Adopt new AvailableAttr constructor in attribute inference.
It was difficult to preserve the existing, buggy behavior of availability
attribute inference with respect to attributes specifying availability for
non-platform-specific domains. Instead, this change improves attribute merging
by tracking every domain independently, and only merging attributes from the
same domain.
2025-01-10 18:43:12 -08:00
Allan Shortlidge
cfb4b8f99b Parse: Adopt new AvailableAttr constructor. 2025-01-10 18:43:12 -08:00
Allan Shortlidge
86ea1ae775 AST: Introduce a Kind enum and new constructor for AvailableAttr.
AvailableAttr::Kind and AvailabilityDomain are designed to replace
PlatformAgnosticAvailabilityKind, allowing AvailableAttr to more flexibly model
availability for arbitrary domains. For now, the new constructor just
translates its inputs into inputs for the existing constructor. Once all of the
callers of the existing AvailableAttr constructor have been updated to use the
new constructor, the representation of AvailableAttr will be updated to store
the new properties.
2025-01-10 18:43:12 -08:00
John McCall
fa932e736c Fix the demangling of sending result types when combined with isolation
Fixes the immediate problem, but the presence of demangling code in the
runtime means that we'll need a follow-up to fix the compiler so that it
doesn't try to use the demangler to materialize metadata for function types
that have both isolation and a sending result.

rdar://142443925
2025-01-10 21:11:45 -05:00
Guillaume Lessard
18dd091fb8 Merge pull request #78538 from lorentey/define-availability-for-6.2
Define placeholder availability for Swift 6.2
2025-01-10 18:09:39 -08:00
Meghana Gupta
2c256180ce Add new utility swift::areUsesWithinValueLifetime 2025-01-10 16:15:50 -08:00
Meghana Gupta
6f375aa6b6 Look through forwarding instructions while querying ownership root
Fixes rdar://142507746
2025-01-10 11:52:06 -08:00
Doug Gregor
1b7707d2cc Remove the now-unused @safe(unchecked) 2025-01-10 10:39:16 -08:00
Doug Gregor
c043f1138b Drop the "allows unsafe" modeling as availability
With the move to unsafe effects, we no longer model `unsafe` as an
availability problem. Remove all of that supporting code.
2025-01-10 10:39:16 -08:00
Doug Gregor
8bb5bbedbc Implement an unsafe expression to cover uses of unsafe constructs
Introduce an `unsafe` expression akin to `try` and `await` that notes
that there are unsafe constructs in the expression to the right-hand
side. Extend the effects checker to also check for unsafety along with
throwing and async operations. This will result in diagnostics like
the following:

    10 |   func sum() -> Int {
    11 |     withUnsafeBufferPointer { buffer in
    12 |       let value = buffer[0]
       |                   |     `- note: reference to unsafe subscript 'subscript(_:)'
       |                   |- warning: expression uses unsafe constructs but is not marked with 'unsafe'
       |                   `- note: reference to parameter 'buffer' involves unsafe type 'UnsafeBufferPointer<Int>'
    13 |       tryWithP(X())
    14 |       return fastAdd(buffer.baseAddress, buffer.count)

These will come with a Fix-It that inserts `unsafe` into the proper
place. There's also a warning that appears when `unsafe` doesn't cover
any unsafe code, making it easier to clean up extraneous `unsafe`.

This approach requires that `@unsafe` be present on any declaration
that involves unsafe constructs within its signature. Outside of the
signature, the `unsafe` expression is used to identify unsafe code.
2025-01-10 10:39:14 -08:00
Doug Gregor
befa36146b Stop including DiagnosticGroups.h everywhere, so changes are less painful 2025-01-10 10:38:15 -08:00
Doug Gregor
63c9882852 Introduce the notion of a warning that is ignored by default, but enabled by -Wwarning/-Werror
As an example, use this for the "`@preconcurrency` on import has no
effect" warning, which is not yet working correctly. This disables it
by default but leaves it in place for our testing.
2025-01-10 09:10:56 -08:00
Doug Gregor
b9de052ef1 Stop including DiagnosticGroups.h everywhere, so changes are less painful 2025-01-10 09:10:10 -08:00
Alastair Houghton
9329776a5d [Backtracing] Use C++ interop to fix elf.h issue on Linux.
We have some problems on Linux where Glibc pulls in `<elf.h>` and then
we end up with conflicting definitions.  Fix by using C++ interop and
putting our definitions into a namespace.

rdar://137201928
2025-01-10 13:49:14 +00:00
Karoy Lorentey
08c22bcf01 [AST] Define placeholder availability for the 6.2 runtime 2025-01-09 18:18:47 -08:00
Alejandro Alonso
cedea94b4c Test fixes and review feedback 2025-01-09 15:54:54 -08:00
Alejandro Alonso
f76d841540 Rename to Slab 2025-01-09 10:39:45 -08:00
Anthony Latsis
5d5e60766e Merge pull request #78438 from AnthonyLatsis/cucurbita-maxima
AST: Define `NumDiagIDs` instead of redefining the enum
2025-01-09 18:27:57 +00:00
Allan Shortlidge
635ea34bb5 Merge pull request #78503 from tshortli/available-attr-creation-conveniences
AST: Introduce new conveniences for synthesizing AvailabilityAttrs
2025-01-09 08:21:40 -08:00
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
eeckstein
6b8c341b64 Merge pull request #78464 from eeckstein/sil-linker-error
SILLinker: convert an assert to a compiler error message
2025-01-09 07:44:47 +01: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
Slava Pestov
c12e0a1e8f Merge pull request #78470 from slavapestov/fix-rdar141961300
Sema: Fix local property wrappers on constructor
2025-01-08 21:33:12 -05:00
Steven Wu
986e8b554d Merge pull request #78495 from cachemeifyoucan/eng/PR-fix-warnings-in-headers 2025-01-08 15:49:26 -08:00
Ian Anderson
e73c08c773 Merge pull request #78378 from ian-twilightcoder/nostdlibimport
[Driver][Frontend] Add a -nostdlibimport argument
2025-01-08 15:15:05 -08:00
Doug Gregor
9bd48e0177 Merge pull request #78491 from DougGregor/strict-safety-more-cases
Strict safety more cases
2025-01-08 13:49:46 -08:00
Allan Shortlidge
9df531a1bd Merge pull request #78485 from tshortli/adopt-semantic-available-attr-part-3
AST: Remove most platform queries from `AvailableAttr`
2025-01-08 12:34:17 -08:00
Anthony Latsis
c4793b6315 DiagnosticEngine: Fix a Diagnostic ctor that skipped group computation 2025-01-08 20:30:09 +00:00
Meghana Gupta
0634babbe6 Merge pull request #78412 from meg-gupta/fixsilcombine
Fix SILCombine of existential applies
2025-01-08 12:12:36 -08:00
Steven Wu
fba942641e [NFC] Fix new warnings in the headers
The newer version of clang will issue warnings in more cases,
specifically, -Winvalid-offsetof and -Wunused-but-set-variable.
This cleans up the new warnings issued from header, which shows up for
every TU that includes them. Fixing them should make the remaining
warnings easier to read.
2025-01-08 11:38:53 -08:00
Slava Pestov
c17044381e Sema: Fix local property wrappers on constructor
Fixes rdar://problem/142443421.
2025-01-08 14:31:12 -05:00
Slava Pestov
cc2048764a Sema: Clean up local property wrapper bookkeeping 2025-01-08 14:31:12 -05:00
Alejandro Alonso
c62e851e38 Implement RemoteInspection support for Builtin.FixedArray 2025-01-08 10:37:17 -08:00
Alejandro Alonso
c5a641b764 WIP: Import C arrays as Vector with flag 2025-01-08 10:37:16 -08:00
Alejandro Alonso
61702fb813 Implement Vector literals 2025-01-08 10:35:55 -08:00
Pavel Yaskevich
8f7e71aa97 Merge pull request #78487 from xedin/Sendable-to-Any-for-lvalues
[CSApply] Sendable-to-Any: Add support for l-value to l-value and inout unsafe casts
2025-01-08 09:57:02 -08:00
Doug Gregor
c9b2d8ba5f Diagnose the use of -disable-access-checking with strict safety checking 2025-01-08 09:47:17 -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