Commit Graph

1705 Commits

Author SHA1 Message Date
Ellie Shin
7c80976081 Package name is only printed in private swiftinterface. This causes
ambiguity during lookup when there are multiple public or inlinalbe
package decls in public interfaces. This PR adds a package name to
public swiftinterface and lets typecheck look up the package name
to narrow down the scope of access to package decls from an external
module.

Resolves rdar://117699160
2023-10-30 13:38:17 -07:00
Sophia Poirier
4c9a726183 nonisolated(unsafe) to opt out of strict concurrency static checking for global variables 2023-10-26 16:22:28 -07:00
Allan Shortlidge
f374a41112 Frontend: Don't force decl skipping with -experimental-lazy-typecheck.
Reverts https://github.com/apple/swift/pull/69214.

Resolves rdar://117020997
2023-10-24 22:58:51 -07:00
Yuta Saito
69479933df [c-interop] Rename @_extern to @extern
Now the feature is gated by experimental feature flag.
It's not shipped in any language release, so this rename should be fine.
2023-10-20 17:37:43 +00:00
Yuta Saito
03ed46aa74 [c-interop] Gate @_extern behind experimental feature flag 2023-10-20 17:04:36 +00:00
Allan Shortlidge
619b6e6755 Frontend: Temporarily force decl skipping with -experimental-lazy-typecheck.
Until a swiftc with https://github.com/apple/swift-driver/pull/1465 is
available widely, enable -experimental-skip-non-exportable-decls whenever
-experimental-lazy-typecheck is specified.

Resolves rdar://117020908
2023-10-16 14:19:20 -07:00
Yuta Saito
051bf4dd43 Merge pull request #69107 from kateinoigakukun/yt/extern-wasm-sym
[wasm] Add @_extern(wasm) attribute support
2023-10-12 09:29:13 -07:00
Alexis Laferrière
9ba500d4e4 Merge pull request #68967 from xymus/feature-0409
Sema: Lift flag requirement for access levels on imports now that SE-0409 has been accepted
2023-10-11 22:23:52 -07:00
Allan Shortlidge
f131c8a3f5 Frontend: Introduce -experimental-skip-non-exportable-decls.
Rename -experimental-serialize-external-decls only to
-experimental-skip-non-exportable-decls in preparation for the flag being used
to influence more than just serialization.

Resolves rdar://116771543
2023-10-10 16:07:04 -07:00
Yuta Saito
bd898b0e7e [wasm] add @_extern(wasm) attribute support
This attribute instructs the compiler that this function declaration
should be "import"ed from host environment. It's equivalent of Clang's
`__attribute__((import_module("module"), import_name("field")))`
2023-10-10 22:42:08 +00:00
Alexis Laferrière
8b098ab487 [Tests] Remove the flag AccessLevelOnImport from all tests but one 2023-10-10 09:09:22 -07:00
Karl Wagner
f71d7b1587 [Test] Fix use of 'FileCheck' 2023-10-07 18:26:52 +02:00
Karl Wagner
ab4f80ed95 [SE-0404] Allow protocols to be nested in non-generic contexts 2023-10-06 21:04:03 +02:00
Doug Gregor
51eed19d4b [Typed throws] Type system support for typed throws.
Add the thrown type into the AST representation of function types,
mapping from function type representations and declarations into the
appropriate thrown type. Add tests for serialization, printing, and
basic equivalence of function types that have thrown errors.
2023-09-29 10:51:53 -07:00
swift-ci
f3166b3f83 Merge pull request #68672 from artemcm/NoInheritSearchPathsInSwift6
Do not inherit search paths from loaded binary Swift module dependencies in Swift 6
2023-09-21 18:59:12 -07:00
Artem Chikin
cc3528900d Do not inherit search paths from loaded binary Swift module dependencies in Swift 6 2023-09-21 15:04:32 -07:00
Saleem Abdulrasool
e1fcb90331 Merge pull request #68525 from hjyamauchi/wrapped-modularization-error-remarks
Emit diagnostics/remarks out of wrapped ModularizationError
2023-09-21 09:43:43 -07:00
Erik Eckstein
f0b811c45f SIL: add the end_init_let_ref instruction
This instructions marks the point where all let-fields of a class are initialized.
This is important to ensure the correctness of ``ref_element_addr [immutable]`` for let-fields,
because in the initializer of a class, its let-fields are not immutable, yet.
2023-09-19 15:10:30 +02:00
Erik Eckstein
e5eb15dcbe Swift SIL: replace the set_deallocating instruction with begin_dealloc_ref
Codegen is the same, but `begin_dealloc_ref` consumes the operand and produces a new SSA value.
This cleanly splits the liferange to the region before and within the destructor of a class.
2023-09-19 15:10:30 +02:00
Mishal Shah
841f015f03 Merge pull request #68583 from apple/bump-version-5.11
[main] Bump the Swift version to 5.11
2023-09-18 16:28:42 -07:00
Mishal Shah
5b73dd6929 Bump the Swift version to 5.11 2023-09-18 09:37:38 -07:00
Hiroshi Yamauchi
c5dc68a348 Emit diagnostics/remarks out of wrapped ModularizationError
The diagnostics/remarks out of the ModularizationError wrapped in a
TypeError (eg. coming from resolveCrossReference) is otherwise just
dropped but could help better understand C/C++ interop issues.
2023-09-18 08:17:58 -07:00
Allan Shortlidge
497034ef64 AST: Requestify generic signature building for @_specialized attributes.
In order to support lazy typechecking during module emission for modules
containing specialized functions, the computation of generic signatures for
`@_specialized` attributes must be requestified.

Resolves rdar://115569606
2023-09-16 00:02:33 -07:00
Allan Shortlidge
061578c1a8 Serialization: Handle IfConfigDecls in ExternallyAccessibleDeclVisitor. 2023-09-14 18:09:49 -07:00
Alexis Laferrière
5072b303ff [Serialization] Ignore missing potentially optional dependencies in getImportedModules
The service `ModuleFile::getImportedModules` is called after the
dependency loading logic runs. We can trust this previous logic to have
correctly loaded optional dependencies. In `getImportedModules` we can
just ignore such missing dependencies.

rdar://115372249
2023-09-12 17:32:32 -07:00
Allan Shortlidge
7c1b150f39 ModuleInterface: Resolve inherited types when computing unsatisfiable conformances.
Previously, unsatisfiable conformances could be omitted from emitted
`.swiftinterface` files in lazy typechecking mode since inherited types might
be unresolved when gathering the conformances.

Adding these test cases also revealed that serialization restrictions needed to
be relaxed in order to accomodate unsatisfiable conformances.
2023-09-07 13:57:39 -07:00
Alexis Laferrière
125962cf0e Merge pull request #68336 from xymus/package-import-require-package
[Sema] Report uses of `package import` without defining a package name
2023-09-06 14:35:58 -07:00
Alexis Laferrière
ea2465dea6 [Sema] Report uses of package import without a package name 2023-09-05 17:33:49 -07:00
Allan Shortlidge
9a993b64be Tests: Refactor client of the lazy_typecheck module into a shared input.
This allows the ModuleInterface test to attempt to build a client against the
emitted `.swiftinterface` which will help us ensure the emitted interface is
correct.
2023-08-31 16:35:45 -07:00
Allan Shortlidge
4622873ba7 Serialization: Refine safety checks for extensions/protocols.
In https://github.com/apple/swift/pull/65267 deserialization safety was made
more conservative, allowing deserialization of any protocol and
deserialization of any extension declaring an explicit conformance to any
protocol. We can refine this to only allow deserialization of safe protocols
and deserialization of extensions declaring conformances to safe protocols.
Importantly, though, we must look up all conformances declared by the
extension, not just the explicit ones.

Resolves rdar://114673761
2023-08-29 21:58:40 -07:00
Allan Shortlidge
5186971a02 Frontend: Introduce -experimental-serialize-external-decls-only option.
This option is designed to be used in conjunction with
`-experimental-lazy-typecheck` and `-experimental-skip-all-function-bodies`
when emitting a resilient module. The emitted binary module should contain only
the decls needed by clients and should contain roughly the same contents as it
would if the corresponding swiftinterface were emitted instead and then built.

This functionality is a work in progress. Some parts of the AST may still get
typechecked unnecessarily. Additionally, serialization does not trigger the
appropriate typechecking requests for some ASTs and then fails due to missing
types.

Resolves rdar://114230586
2023-08-28 21:22:20 -07:00
Alejandro Alonso
d04d8c1c49 Merge pull request #68001 from Azoy/raw-deserialize
[Sema] Fix raw layout deserialization
2023-08-19 08:55:56 -07:00
Alejandro Alonso
dadbbb4d02 Fix raw layout deserialization
Update raw_layout.swift
2023-08-18 20:36:27 -07:00
Doug Gregor
5d6746d974 Improve checking of macro-generated accessors against documented names
The checking of the accessors generated by a macro against the
documented set of accessors for the macro is slightly too strict and
produces misleading error messages. Make the check slightly looser in
the case where an observer-producing macro (such as
`@ObservationIgnored`) is applied to a computed property. Here, we
would diagnose that the observer did not in fact produce any
observers, even though it couldn't have: computed properties don't get
observers. Remove the diagnostic in this case.

While here, add some tests and improve the wording of diagnostics a
bit.

Fixes rdar://113710199.
2023-08-17 16:59:42 -07:00
Slava Pestov
e5c7d251a2 Serialization: Fix serializing normal conformance xrefs for tuple conformances
Fixes rdar://problem/113707902.
2023-08-10 16:15:45 -04:00
Artem Chikin
6d92157298 [Explicit Module Builds] Write '-clang-target' to serialized debugging options
Otherwise LLDB's ClangImporter instance will be instantiated against a
mismatching triple.
2023-08-08 10:12:12 -07:00
Pavel Yaskevich
2a0651e8b0 [Frontend/NFC] SE-0400: Enable InitAccessors feature by default 2023-07-31 13:18:59 -07:00
Nate Chandler
e5d87f75a8 [SIL] Add source formal type to checked_cast_br.
It is necessary for opaque values where for casts that will newly start
out as checked_cast_brs and be lowered to checked_cast_addr_brs, since
the latter has the source formal type, IRGen relies on being able to
access it, and there's no way in general to obtain the source formal
type from the source lowered type.
2023-07-27 15:04:15 -07:00
Joe Groff
aee071bf4e Introduce an experimental @_rawLayout attribute.
This attribute can be attached to a noncopyable struct to specify that its
storage is raw, meaning the type definition is (with some limitations)
able to do as it pleases with the storage. This provides a basis for
implementing types for things like atomics, locks, and data structures
that use inline storage to store conditionally-initialized values.
The example in `test/Prototypes/UnfairLock.swift` demonstrates the use
of a raw layout type to wrap Darwin's `os_unfair_lock` APIs, allowing
a lock value to be stored inside of classes or other types without
needing a separate allocation, and using the borrow model to enforce
safe access to lock-guarded storage.
2023-07-24 14:28:19 -07:00
Saleem Abdulrasool
19f4b6f6e6 Merge pull request #67369 from compnerd/static-serialization
Serialization: allow `IS_STATIC_LIBRARY` to be deserialised properly
2023-07-19 07:14:48 -07:00
Saleem Abdulrasool
8466ef6d80 Serialization: allow IS_STATIC_LIBRARY to be deserialised properly
Properly encode the field metadata to permit the deserialization by
`llvm-bcanalyzer` for aiding debugging.
2023-07-18 10:28:12 -07:00
Pavel Yaskevich
8a666dea6f [Serialization] InitAccessors: Use correct code for @storageRestrictions serialization 2023-07-17 17:57:32 -07:00
Holly Borla
74c9bfb02e [NFC] Update a macro serialization test for the change to ExtensionMacro. 2023-06-30 16:06:13 -07:00
eeckstein
7fcfcdeecf Merge pull request #66990 from eeckstein/bare-objects
SIL: add a `bare` attribute to `global_value` and `alloc_ref`
2023-06-29 18:48:44 +02:00
Erik Eckstein
625619ee17 SIL: add a bare attribute to global_value
The `bare` attribute indicates that the object header is not used throughout the lifetime of the value.
This means, no reference counting operations are performed on the object and its metadata is not used.
The header of bare objects doesn't need to be initialized.
2023-06-29 06:57:05 +02:00
Erik Eckstein
b08710d911 SIL: add a bare attribute to alloc_ref
The `bare` attribute indicates that the object header is not used throughout the lifetime of the object.
This means, no reference counting operations are performed on the object and its metadata is not used.
The header of bare objects doesn't need to be initialized.
2023-06-29 06:57:05 +02:00
Holly Borla
c867c7c917 [Macros] Allow extension macros to specify conformances in the attached
attribute.
2023-06-28 00:42:23 -07:00
Arnold Schwaighofer
92499e1a98 Fix directory test/Serialization 2023-06-20 13:15:20 -07:00
Arnold Schwaighofer
c1a93e0bde Move tests over to use the %use_no_opaque_pointers option 2023-06-14 10:49:48 -07:00
Ben Barham
1141e59b31 [Test] Update expected macro error
https://github.com/apple/swift/pull/66497 and
https://github.com/apple/swift/pull/66482 succeeded separately, then
merged. But after 66497 the error now includes parentheses.

Resolves rdar://110655182.
2023-06-12 11:34:20 -07:00