Commit Graph

1213 Commits

Author SHA1 Message Date
Slava Pestov
07aae0cb4f Add minimal SILGen and Serialization tests for variadic generics 2022-11-12 02:13:54 -05:00
Michael Gottesman
78ffc87c70 [move-only] Make sure we can properly deserialize deinits from structs/enums.
We previously had a cast<ClassDecl> here. I changed it to NominalTypeDecl and
added tests for this.

rdar://102173184
2022-11-09 19:40:04 -08:00
Michael Gottesman
4fcc60e794 [move-only] When emitting a module, do not emit the body of the deinit of a move only type.
rdar://102173152
2022-11-09 19:40:04 -08:00
Michael Gottesman
5406131e8c [move-only] Emit a nice error if a move only type is imported into a module that does not have experimental-move-only enabled.
This just prevents user confusion when they forget to do this since weird
behavior /could/ result.

rdar://102062737
2022-11-07 16:11:46 -08:00
Allan Shortlidge
290dd6bcaf Test: Make load-file-permissions.swift test more tolerant of interrupted runs. 2022-10-30 17:08:06 -07:00
Alexis Laferrière
34779d46a9 Merge pull request #61789 from xymus/serial-rebuilt-bit
[Serialization] Write in the binary swiftmodule file whether it was rebuilt from a swiftinterface
2022-10-29 09:31:23 -07:00
Alexis Laferrière
41ec454129 [Serialization] Update error message on deserialization failure
This adds information about whether the module was built from source or
from a swiftinterface, whether it's resilient or not, and tweaks the
format.
2022-10-27 18:51:28 -07:00
Nate Chandler
ed623d7b64 [NFC] Shortened SIL [init] flag.
Instead of writing out [initalization] for some instructions, use [init]
everywhere.
2022-10-27 10:38:54 -07:00
Anthony Latsis
7e286fdd57 Don’t suggest adding the project in the "submit a bug report" message
Instead, stimulate users to follow the referenced bug reporting guidelines,
which contain all the necessary information. We’d rather encourage attempts
at reducing issues before attaching Xcode projects. This is an accompaniment
to https://github.com/apple/swift-org-website/pull/158.
2022-10-18 19:19:15 +03:00
Anthony Latsis
bdad7e9dec Merge pull request #60947 from AnthonyLatsis/migrate-test-suite-to-gh-issues-20
Gardening: Migrate test suite to GH issues p. 20
2022-09-17 12:41:22 +03:00
Erik Eckstein
97b2354be6 SIL: add needsStackProtection flags for address_to_pointer and index_addr instructions.
Also add new "unprotected" variants of the `addressof` builtins:
* `Builtin.unprotectedAddressOf`
* `Builtin.unprotectedAddressOfBorrow`
2022-09-08 08:42:22 +02:00
Anthony Latsis
c1fcdc4134 Gardening: Migrate test suite to GH issues: Serialization 2022-09-04 07:02:59 +03:00
Pavel Yaskevich
afb78b402d [Tests] NFC: Disable remote/device execution of opaque result type cross module test
Resolves: rdar://99100097
2022-08-24 14:27:16 -07:00
YOCKOW
d10381557b [NFC] Python Lint: Fix E275(missing whitespace after keyword) issues. 2022-08-21 16:07:07 +09:00
Alexis Laferrière
e17590e0c0 Merge pull request #60610 from xymus/serial-root-message
[Serialization] Suggest a solution path for modified swiftmodules causing deserialization failures
2022-08-18 14:49:26 -07:00
Alexis Laferrière
9c840a7156 [Serialization] Suggest solution for SDK mods causing deserialization failures
Many deserialization failures at this points are caused by archives
installed over the SDK. Let's extend the current error message with a
solution for such a case.

rdar://86280699
2022-08-18 12:30:49 -07:00
Holly Borla
8713d78704 [PrintOptions] Print explicit 'any' in SIL. 2022-08-18 01:15:12 -04:00
Slava Pestov
cfb4e60a48 Merge pull request #60523 from slavapestov/fix-opened-generic-environment-identity
Serialization: Preserve identity of opened generic environments
2022-08-16 14:33:44 -04:00
Slava Pestov
b36f37cc72 Serialization: Preserve identity of opened generic environments
We used to create a new environment for each opened archetype, which is
incorrect when deserializing a nested type of another opened archetype.
2022-08-15 13:59:12 -04:00
swift-ci
01de79acdf Merge remote-tracking branch 'origin/main' into rebranch 2022-08-07 21:13:02 -07:00
Slava Pestov
d222ac5f6e Sema: New syntax for @opened archetypes in textual SIL
The old syntax was

    @opened("UUID") constraintType

Where constraintType was the right hand side of a conformance requirement.

This would always create an archetype where the interface type was `Self`,
so it couldn't cope with member types of opened existential types.

Member types of opened existential types is now a thing with SE-0309, so
this lack of support prevented writing SIL test cases using this feature.

The new syntax is

    @opened("UUID", constraintType) interfaceType

The interfaceType is a type parameter rooted in an implicit `Self`
generic parameter, which is understood to be the underlying type of the
existential.

Fixes rdar://problem/93771238.
2022-08-07 19:03:46 -04:00
swift-ci
2e1140c767 Merge remote-tracking branch 'origin/main' into rebranch 2022-07-29 09:14:45 -07:00
Ben Barham
ee8bc34795 [Serialization] Output precedence higher/lowerThan relations when valid
When allowing errors, do not output higher/lowerThan relations for
invalid precedencegroup declarations.

Resolves rdar://97362356.
2022-07-28 12:23:12 -07:00
swift-ci
cb1adec9bc Merge remote-tracking branch 'origin/main' into rebranch 2022-07-28 09:34:49 -07:00
Hamish Knight
cfd24354e1 [Sema] Fix missing operator diagnostic logic
Introduce a `getTopmostDeclarationDeclContext`
utility to ensure we ensure we don't visit a
`nullptr` DeclContext for an erroneous module
under `-experimental-allow-module-with-compiler-errors`.

Additionally, tweak the insertion location such
that we insert at the start of any attributes
present.

rdar://97267326
2022-07-28 12:55:53 +01:00
swift-ci
5706f48a31 Merge remote-tracking branch 'origin/main' into rebranch 2022-07-20 19:14:34 -07:00
Pavel Yaskevich
498721c9df [TypeChecker] SE-360: Add support for if #unavailable
Lift a temporary restriction and make `if #available`
and `if #unavailable` behave consistently.
2022-07-20 13:26:43 -07:00
swift-ci
f7e4935a7f Merge remote-tracking branch 'origin/main' into rebranch 2022-07-20 05:37:11 -07:00
Alex Hoppen
e14fa7291f [CS] Don’t fail constraint generation for ErrorExpr or if type fails to resolve
Instead of failing constraint generation by returning `nullptr` for an `ErrorExpr` or returning a null type when a type fails to be resolved, return a fresh type variable. This allows the constraint solver to continue further and produce more meaningful diagnostics.

Most importantly, it allows us to produce a solution where previously constraint generation for a syntactic element had failed, which is required to type check multi-statement closures in result builders inside the constraint system.
2022-07-20 09:46:12 +02:00
swift-ci
9cc8d34c93 Merge remote-tracking branch 'origin/main' into rebranch 2022-07-07 05:12:51 -07:00
Erik Eckstein
1cbea04103 run the TargetConstantFolding pass also at -Onone
This is important for performance diagnostics: it’s assumed that (non-generic) MemoryLayout constants do not need to create metadata at runtime. At Onone this is only guaranteed if the TargetConstantFolding pass runs.

rdar://94836837
2022-07-07 08:35:04 +02:00
swift-ci
18f75b981d Merge remote-tracking branch 'origin/main' into rebranch 2022-06-13 11:33:01 -07:00
Richard Wei
94e8f5393e Enable string processing by default.
Make frontend flag `-enable-experimental-string-processing` default to true.
2022-06-12 20:25:16 -07:00
Ben Barham
5e44a45b35 [Test] More test updates to take into account VersionTuple change 2022-05-26 12:19:46 -07:00
Robert Widmann
663722d892 Parameterized Existential Types Are Enabled By Default
See https://forums.swift.org/t/accepted-se-0353-constrained-existential-types/57560
2022-05-25 09:50:36 -07:00
Alexis Laferrière
6c287b2b41 Merge pull request #58935 from xymus/swiftmodule-per-sdk-soft-reject
[Serialization] Soft-reject swiftmodules built against a different SDK on tagged compilers
2022-05-18 15:09:48 -07:00
Alexis Laferrière
3523adbb53 [Serialization] Limit per-SDK swiftmodule restriction to tagged compilers
Only production compilers should apply the per-SDK restriction on
loading swiftmodules. Use the "is the compiler tagged" information over
a release build to align with the other main swiftmodule loading
restriction accepting only swiftmodules built by the same tag.

Also use an env var SWIFT_DEBUG_FORCE_SWIFTMODULE_PER_SDK to enable
testing this feature in any compilers.
2022-05-16 13:22:35 -07:00
Alexis Laferrière
c8059a09e9 [Serialization] Soft-reject swiftmodules built against a different SDK
Change the way swiftmodules built against a different SDK than their
clients are rejected. This makes them silently ignored when the module
can be rebuilt from their swiftinterface, instead of reporting a hard
error.

rdar://93257769
2022-05-16 13:22:35 -07:00
Mishal Shah
f4a1dac792 Bump the Swift version to 5.8 (#58931)
* Bump the Swift version to 5.8
2022-05-16 09:17:38 -07:00
Robert Widmann
494e47f240 Teach Type Deserialization About Parameterized Protocol Types
Clean up a thinko in the original deserialization code by making
the TypeDeserializer aware of parameterized existential types. The
deserialization code paths are already in place, we're just not
calling them!

rdar://93062561
2022-05-10 20:33:00 -07:00
Slava Pestov
dac8d666ee Stop passing -requirement-machine-{abstract,inferred,protocol}-signatures flags in tests
These flags are now no-ops.
2022-05-10 12:56:17 -04:00
eeckstein
61e762d945 Merge pull request #58709 from eeckstein/fix-sil-serialization
SIL: fix serialization of the `unchecked_ref_cast` instruction
2022-05-07 08:43:40 +02:00
Alexis Laferrière
298083d6be Merge pull request #58702 from xymus/accept-more-sdks
[Serialization] Allow loading modules built on some SDK variants
2022-05-06 09:45:31 -07:00
Erik Eckstein
26b03096c6 SIL: fix serialization of the unchecked_ref_cast instruction
We didn't serialize the ownership kind, which resulted in a miscompile causing an over-release.

The unchecked_ref_cast is the only instruction for which we change the ownership in the optimizer, so that it doesn't match the operand's ownership. Therefore this fix is sufficient for now - we don't need to serialize the ownership of other instructions.
But this is really a design flaw of the `OwnershipForwardingMixin`. It should not allow to set the ownership to arbitrary values.

rdar://92696202
2022-05-06 15:30:51 +02:00
Alexis Laferrière
1757061342 [Serialization] Allow loading modules built on some SDK variants
When restricting loading swiftmodules to the SDK used to build them,
an exception should be made for modules built against an SDK that is a subset
of the SDK used when loading the module. In such a case, the swiftmodule
file is more reliable.

rdar://92827584
2022-05-05 17:08:19 -07:00
Arnold Schwaighofer
bcf24e4715 Eager specializer: Fix pre-specialization of imported code
We must no pre-specialize imported code (except if this was explicitly
called for by the importing module).

Therefore, don't pre-specialize `shared` definitions based on their
pre-specialization attributes.

Rather, only pre-specialize if the pre-specialization is called for
using a `target: "theFunctionToSpecialize"` parameter.

Run OnonePrespecializations before serialization so that module native functions
are not yet marked `shared` and can be identified as native.

rdar://92337361
2022-05-04 08:32:41 -07:00
Josh Soref
203b9ce33f Spelling serialization (#42515)
* spelling: absolute

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: ambiguous

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: attempting

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: attrs

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dependency

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: extract

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: function

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: interface

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: mandatory

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: nonexistent

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: particular

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: related

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: signature

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: specifies

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: that

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: the

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: without

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
2022-04-25 12:58:35 -07:00
Luciano Almeida
e57cf51b4e [tests] Add SR number that tracks diagnostic Qol issue 2022-04-17 14:08:04 -03:00
Luciano Almeida
7e9b1af4a6 [tests] Add Serialization tests for async let any_patter bit encode/decode 2022-04-17 14:06:39 -03:00
Slava Pestov
6982b90c6e Serialization: Round-trip primary associated type list 2022-04-16 22:36:29 -04:00