Commit Graph

2508 Commits

Author SHA1 Message Date
Meghana Gupta
148155710f Merge pull request #76624 from meg-gupta/lifetimedepscoped
Add support for borrow lifetime dependence
2024-10-02 13:58:14 -07:00
Alexis Laferrière
ff803c6df1 Sema: Move the availability macros cache to the ASTContext
The availability macros definitions are parsed from the command line and
stored in a cache. The cache was in the Parser, which would have it be
computed for each file using availability macros. Let's move it to the
ASTContext instead where it can generally be computed once per invocation
and used across the module.

rdar://134797088
2024-10-01 09:07:56 -07:00
nate-chandler
43dce846bf Merge pull request #76778 from nate-chandler/general-coro/20240930/1
[Test] Add asserts req to experimental tests.
2024-09-30 11:06:35 -07:00
Doug Gregor
cd6864a5f3 Merge pull request #76454 from DmT021/wp/deprecated-diagnostic-groups
[Diagnostics] Add new groups to the 'deprecated' diagnostic group
2024-09-30 09:05:16 -07:00
Nate Chandler
6be4090e71 [Test] Add asserts req to experimental tests.
The CoroutineAccessors experimental feature requires asserts.
2024-09-30 07:09:49 -07:00
Nate Chandler
091368ba21 [CoroutineAccessors] Added read.
The name is a placeholder for the mutating single-yield coroutine
accessor.
2024-09-26 18:10:39 -07:00
Nate Chandler
98a2e6a7df [CoroutineAccessors] Added modify.
The name is a placeholder for the mutating single-yield coroutine
accessor.
2024-09-26 18:10:39 -07:00
Nate Chandler
d5e000fe22 [Sema] Fix inconsistent mutatingness diagnostic.
Refer to the correct problematic accessor or accessors.
2024-09-26 18:10:38 -07:00
Nate Chandler
544153960a [NFC] Sema: Extracted diagnostic method.
In preparation to introduce more calls.
2024-09-26 08:27:17 -07:00
Kavon Farvardin
9569eafedc Merge pull request #76660 from kavon/small-fixes
Sema: generalize `findSyntacticErrorForConsume`
2024-09-25 19:20:39 -07:00
Dmitrii Galimzianov
aa5e10f8d2 [Diagnostics] DeprecatedDeclaration group 2024-09-25 23:18:25 +02:00
Kavon Farvardin
df73eecdeb Sema: generalize findSyntacticErrorForConsume
Since this function is being called from the constraint solver now, we
need to generalize the way it obtains the Type of an Expression, as the
expression itself may not know its own type, only the solver does.

resolves rdar://134371893 / https://github.com/swiftlang/swift/issues/75999
2024-09-24 13:59:29 -07:00
Meghana Gupta
f8f043f585 Change @lifetime to always mean inherit lifetime dependence 2024-09-20 22:05:23 -07:00
Allan Shortlidge
07a987cdab Sema: Build TypeRefinementContexts correctly for VarDecls.
The `TypeRefinementContextBuilder` could visit a given `VarDecl` in the AST
multiple times when the `VarDecl` has a parent `PatternBindingDecl`, resulting
in duplicate TRC nodes.
2024-09-20 15:29:22 -07:00
Allan Shortlidge
f658648d51 Sema: Build TypeRefinementContexts correctly for multi-element enum cases.
Nodes in the TypeRefinementContext tree should be introduced for enum cases,
rather than enum elements, since its the cases that carry availability
annotations. Previously, enum cases in source that contained more than one
element would result in a malformed TRC tree that had overlapping sibling nodes
for each of the elements in a case declaration.
2024-09-20 15:29:22 -07:00
Meghana Gupta
e6fc5c2e6d Delete SWIFT_ENABLE_EXPERIMENTAL_NONESCAPABLE_TYPES flag 2024-09-16 14:08:16 -07:00
Pavel Yaskevich
16244b327d Merge pull request #76439 from xedin/delay-implicit-pointer-conversions-for-unknown-inout
[CSSimplify] Delay `inout` type to pointer conversion until `inout` is sufficiently resolved
2024-09-13 11:06:28 -07:00
Pavel Yaskevich
b1d9ae01ed [CSSimplify] Delay inout type to pointer conversion until inout is sufficiently resolved
If left-hand side of any conversion constraint is `inout` type
and right is a pointer (or optional thereof), delay simplification
until `inout` is at least partially structurally resolved (cannot
be a type variable or dependent member) because eager simplification
won't record all of the possible conversions.
2024-09-12 13:46:02 -07:00
Alejandro Alonso
718bba486a Merge pull request #76404 from Azoy/integer-type-parsing-fixes
[Parse] Fix type parsing when preceded by '-'
2024-09-12 09:26:57 -07:00
Alexis Laferrière
ad94d55b62 Merge pull request #76410 from xymus/public-module-name-fix-loaded
Sema: Fix `getPublicModuleName` to look only at loaded modules
2024-09-12 08:27:12 -07:00
Allan Shortlidge
21837e9fde Sema: Reject @available on observing accessors.
Marking an observer unavailable (or potentially unavailable) has no effect
since the compiler emits calls to them unconditionally.

Resolves rdar://80337141.
2024-09-11 16:42:48 -07:00
Alexis Laferrière
f9a8a674c6 Sema: fix getPublicModuleName to look only at loaded modules
When onlyIfImported is true, we should return the public module name
only when the public facing module is already imported. Replace the
call to getModuleByIdentifier with getLoadedModule to prevent trigering
loading that module.

Also fix the test where the CHECK lined ended up matching itself from
the diagnostics output.
2024-09-11 13:12:58 -07:00
Doug Gregor
b272a05ea9 Merge pull request #76363 from DmT021/wp/print-diagnostic-groups
[Diagnostics] Add -print-diagnostic-groups flag
2024-09-11 13:04:07 -07:00
Alejandro Alonso
6f83e3c28f Fix type parsing when preceeded by '-' 2024-09-11 10:28:44 -07:00
Pavel Yaskevich
c49aeaf177 Merge pull request #76354 from xedin/improve-mismatch-diagnostics-in-optional-context
[CSSimplify] Rework how/when mismatches between optional types are fixed
2024-09-11 10:14:19 -07:00
Alexis Laferrière
5ac817e338 Merge pull request #76386 from xymus/public-import-of-private-fixit
Sema: Use `internal import` in fixits on public imports of private modules
2024-09-11 08:59:12 -07:00
Dmitrii Galimzianov
a8b71ea97f Add -print-diagnostic-groups flag
This change adds the `-print-diagnostic-groups` flag as described by SE-0443.
2024-09-11 13:34:42 +02:00
Meghana Gupta
0dde044e89 Merge pull request #76256 from meg-gupta/lifetimeattrsyntax
Introduce @lifetime attribute to specify lifetime dependence on function declarations
2024-09-10 19:49:32 -07:00
Alexis Laferrière
20b4187e25 Tests: report-public-import-of-private-module doesn't require asserts now
This was restricted to asserts to use Swift 6 mode.
2024-09-10 13:22:57 -07:00
Alexis Laferrière
b399af0898 Tests: rename test to report-public-import-of-private-module.swift
The test isn't mainly implementation-only anymore,
have the name reflect that.
2024-09-10 13:22:57 -07:00
Alexis Laferrière
4fe88c2720 Sema: Use internal import instead of @_implementationOnly on public imports of a private module
The error about a public import of a private module is raised when
a library-level API module imports a library-level SPI module without
a non-public access-level, `@_implementationOnly` attribute or
`@_spiOnly` attribute. Update the fixit to insert an `internal` instead
of a `@_implementationOnly`.
2024-09-10 13:22:57 -07:00
Alexis Laferrière
9ce34ab8a0 Tests: Add a comment where warnings would be desired
We may want to add a similar logic from getImportAccessLevel where
we determine the defining module in `diagnoseAndFixMissingImportForMember`.
It should recommend to add the authoritative import, without
considering those already present in the file. Then we can
delete the `registerRequiredAccessLevelForModule(definingModule, accessLevel);`
in `recordRequiredImportAccessLevelForDecl` and point to more
superfluous public imports.
2024-09-10 11:03:25 -07:00
Pavel Yaskevich
55b8d9538d [CSSimplify] Rework how/when mismatches between optional types are fixed
- Don't attempt to insert fixes if there are restrictions present, they'd inform the failures.

  Inserting fixes too early doesn't help the solver because restriction matching logic would
  record the same fixes.

- Adjust impact of the fixes.

  Optional conversions shouldn't impact the score in any way because
  they are not the source of the issue.

- Look through one level of optional when failure is related to optional injection.

  The diagnostic is going to be about underlying type, so there is no reason to print
  optional on right-hand side.
2024-09-10 10:35:05 -07:00
Meghana Gupta
7af6c11e7e Store parsed @lifetime attribute on the function type 2024-09-09 22:02:44 -07:00
Alexis Laferrière
9eaa0e5df8 Sema: getImportAccessLevel returns an authoritative import
Change how we pick the one import to point to in diagnostics about a
referenced decl. This mostly affects the warning about superfluously
public imports. This warning encourages the developer to delete imports,
let's make sure we push them towards deleting the right ones.

The order was previously not well defined, except that we always picked
one of the most public imports.

We now prioritize imports in this order:
1. The most public import. (Preserving the current behavior in
   type-checking of access-level on imports)
2. The import of the public version of the module defining the decl,
   determined via export_as or -public-module-name.
3. The import of the module defining the decl.
4. The first import in the sources bringing the decl via reexports.
5. Any other import, usually via an @_exported import in a different file.

rdar://135357155
2024-09-09 16:57:46 -07:00
Alexis Laferrière
8d28ed4fa9 Merge pull request #76269 from xymus/public-module-name
Diagnostics: Intro the public module name concept to hide support modules from clients
2024-09-09 16:57:12 -07:00
Alex Hoppen
50a892425d [test] Add -disable-experimental-parser-round-trip to value generic tests
Parsing of integer literals as generic arguments isn’t implemented in SwiftParser yet, blocking swift-syntax PR testing.
2024-09-06 08:16:23 -07:00
Alexis Laferrière
c70162c703 Merge branch 'main' into public-module-name 2024-09-05 20:02:07 -07:00
Alexis Laferrière
d71bd2df00 Merge pull request #76267 from xymus/warn-on-ioi-clang-targets
Sema: Warn on all non-resilient uses of `@_implementationOnly import`, even for clang targets
2024-09-05 20:01:18 -07:00
Alejandro Alonso
45d7ea39a5 Merge pull request #75518 from Azoy/integer-generics
Implement Value generics
2024-09-05 15:33:46 -07:00
Hamish Knight
684621d330 Merge pull request #76193 from hamishknight/miscing-diag
[Sema] Walk patterns for syntactic diagnostics
2024-09-05 22:02:14 +01:00
Alexis Laferrière
0be1dcc09d ModuleInterface: make -public-module-name an ignorable flag 2024-09-05 10:57:25 -07:00
Alexis Laferrière
6c3c108b1e Sema: Limit the warning about @_implementationOnly imports deprecation to Swift targets
Preserve the warning to use `internal import` instead of `@_implementationOnly`
to imports of Swift modules only. This warning can be noisy, limiting it may
prevent users from outright learning to ignore it. Typical uses of an
`@_implementationOnly` import of a clang module is often for a project
internal module instead of a layering concern as we have with Swift module
targets. We can leave legacy uses of `@_implementationOnly` in peace for now.
2024-09-05 10:40:36 -07:00
Alexis Laferrière
3995ee4bbf Sema: Warn on all non-resilient uses of @_implementationOnly, even for clang targets
The warnings about `using '@_implementationOnly' without enabling library evolution for 'client'
may lead to instability during execution` and `@_implementationOnly' is deprecated, use
'internal import' instead` were wrongly restricted to only Swift import targets.
Make sure they are raised for clang module targets as well.

rdar://135233043
2024-09-04 16:40:49 -07:00
Alexis Laferrière
bc9babbbea Diagnostics: Use public module name in diagnostics 2024-09-04 16:21:37 -07:00
Alejandro Alonso
9faf615c88 Add runtime availability checking for value generics 2024-09-04 15:13:51 -07:00
Alejandro Alonso
451e7259a1 Add ValueGenerics experimental feature 2024-09-04 15:13:49 -07:00
Alejandro Alonso
19fc174f30 Don't create fake GTPDs for SIL generic signatures 2024-09-04 15:13:47 -07:00
Alejandro Alonso
e0f2b812e8 Add serialization and parser tests for SIL 2024-09-04 15:13:47 -07:00
Alejandro Alonso
a434126554 Disallow referencing a value generic outside of certain contexts 2024-09-04 15:13:45 -07:00