Commit Graph

2362 Commits

Author SHA1 Message Date
Slava Pestov
228112f4bc Merge pull request #36737 from slavapestov/nil-default-arg-rethrows
Sema: Teach rethrows checking about 'nil' default arguments
2021-04-04 11:48:04 -04:00
Slava Pestov
f190e51f8d GSB: Diagnose redundant superclass requirements using the redundant requirement graph 2021-04-03 22:33:14 -04:00
Slava Pestov
f1831fb16a Sema: Teach rethrows checking about 'nil' default arguments
In Swift 5.4, this worked:

  func foo(_: (() throws -> ())? = nil) rethrows {}
  foo()  // no 'try' needed

However, this was an accident, because this was also accepted:

  func foo(_: (() throws -> ())? = { throw ... }) rethrows {}
  foo()  // 'try' *should* be required here

This got fixed at some point recently, but since people rely on the
old case working for 'nil', let's add back a check for a 'nil'
default parameter.

Fixes rdar://problem/76169080.
2021-04-02 23:56:59 -04:00
Doug Gregor
f8cb209c5a Only diagnose references to globals under -warn-concurrency.
Fixes rdar://75996222.
2021-04-02 00:06:48 -07:00
Mike Ash
6d2fc9e9bd Add @availability to some concurrency tests that were missing it. 2021-04-01 15:34:33 -04:00
Saleem Abdulrasool
c03c3b266d Merge pull request #36592 from drexin/wip-remove-codable-enum-flag
[Frontend] Remove enable-experimental-enum-codable-derivation flag
2021-03-31 15:04:32 -07:00
Holly Borla
71cd85c42b Merge pull request #36611 from hborla/property-wrapper-csgen-crash
[ConstraintSystem] Fix a property wrapper constraint generation crash.
2021-03-29 10:58:16 -07:00
Slava Pestov
986d033702 Merge pull request #36615 from slavapestov/redundant-layout-constraints
Diagnose redundant and conflicting layout requirements using the explicit requirement graph
2021-03-27 18:40:00 -04:00
David Zarzycki
8a0d68bbae [testing] Add missing REQUIRES: concurrency 2021-03-27 06:10:28 -04:00
Slava Pestov
1d9b202719 GSB: Fix inconsistent 'redundant conformance' diagnostic 2021-03-27 00:35:19 -04:00
Slava Pestov
299ff02684 GSB: Diagnose redundant layout requirements using the redundant requirement graph 2021-03-27 00:35:19 -04:00
Holly Borla
d23246568c [ConstraintSystem] Fix a property wrapper constraint generation crash. 2021-03-26 15:36:34 -07:00
Kavon Farvardin
7585f46085 [test] coverage for global effectful props 2021-03-26 07:58:28 -07:00
Kavon Farvardin
e94344593c [test] effectful properties + property wrappers
They're currently incompatible, but it should be
possible to enable this, with some care taken to
ensure that effectful wrappers are composed
correctly.
2021-03-26 07:58:28 -07:00
Kavon Farvardin
e418403fc6 [test] eff. prop + class inheritance & overrides 2021-03-26 07:58:28 -07:00
Kavon Farvardin
47ea602668 [test] eff. prop + protocol conformance, composition & inheritance 2021-03-26 07:58:28 -07:00
Doug Gregor
c76dac7155 Banish @asyncHandler to a hidden flag.
We don't want @asyncHandler to be part of the concurrency model, so put
it behind a different flag.
2021-03-25 16:45:21 -07:00
Dario Rexin
e42cf5b154 [Frontend] Remove enable-experimental-enum-codable-derivation flag
SE-295 has been accepted, so we don't need to hide the feature behind a flag anymore.
2021-03-25 15:26:21 -07:00
Evan Wilde
d572c75d21 NFC: Remove 'actor class' from diagnostics 2021-03-23 15:06:41 -07:00
Doug Gregor
508274c90e Update "non-concurrent-value" diagnostics to say "non-sendable" 2021-03-18 23:14:47 -07:00
Doug Gregor
9579390024 [SE-0304] Rename ConcurrentValue to Sendable 2021-03-18 22:48:20 -07:00
Kenneth Chew
289840b42d Add test case for diagnostic 'because_rethrows_default_argument_throws'
The first test case added ideally shouldn't have any expected error or diagnostic.
However, due to SR-1534, there is an error emitted here. Thus, an expected error is
used here to show the compiler's behavior today.

If SR-1534 is fixed in the future, the first test case should no longer have any
expected error nor an expected note. However, the second test case should still be
left alone.

Addresses SR-14270
2021-03-17 13:39:22 -04:00
Pavel Yaskevich
2e0bda57e9 Merge pull request #35933 from mininny/add-diagnostics-for-invalid-power-operator
[Diagnostics] Add diagnostic when using nonexistent '**' operator
2021-03-15 00:34:02 -07:00
Minhyuk Kim
56f4a7bb7c Add unexisting_power_operator diagnostic when using unexisting ** operator in swift 2021-03-14 21:17:16 +09:00
Anthony Latsis
b7fcd2f434 Diag: Reword some errors for invalid usage of covariant Self 2021-03-12 15:54:21 +03:00
Doug Gregor
2f2c194272 Adopt 'nonisolated' in many tests, make sure its a modifier 2021-03-07 11:37:57 -08:00
Doug Gregor
f56ba59605 Add 'nonisolated' modifier as the preferred spelling for @actorIndependent 2021-03-07 10:57:35 -08:00
Doug Gregor
6efaf7ac0f Introduce -warn-concurrency flag to warn about concurrency issues.
To help support incremental adoption of the concurrency model, a number
of concurrency-related diagnostics are enabled only in "new" code that
takes advantage of concurrency features---async, @concurrent functions,
actors, etc. This warning flag opts into additional warnings that better
approximate the eventual concurrency model, and which will become
errors a future Swift version, allowing one to both experiment with
the full concurrency model and also properly prepare for it.
2021-03-05 10:58:54 -08:00
Doug Gregor
47b0abfda4 Remove Actor.enqueue(partialTask:) and all its magic.
The backs out of some early decisions we made about actor layout
that we don't need. Custom actors will use a different approach.

This should suffice for the remainder of rdar://70146827.
2021-03-04 22:49:10 -08:00
Doug Gregor
a8beb7bc94 Merge pull request #36246 from DougGregor/se-0302-minor-tweaks 2021-03-03 12:59:10 -08:00
Doug Gregor
09121d78d6 Fix more tests 2021-03-03 08:54:08 -08:00
Slava Pestov
0be55c130d GSB: Use redundant requirement graph in enumerateRequirements() 2021-03-01 17:50:26 -05:00
Dario Rexin
8e0a260414 [Sema]: Add Codable synthesis for enums with associated values (#34855)
* [Sema]: Add Codable synthesis for enums with associated values

* Incorporate review feedback for enum Codable synthesis

* Implement enum specific versions of existing Codable tests

* Encode parameterless enum cases as

* Add test for overloaded case identifiers

* Align code generation with latest proposal revision

* Put enum codable derivation behind flag

* clang-format sources

* Address review feedback and fix tests

* Add diagnostic for conflicting parameter identifiers

* Restructure code after rebase
2021-02-26 17:20:34 -08:00
Rintaro Ishizaki
26aa91e660 Merge pull request #35230 from mininny/default-accessor-error-in-protocol
[Diagnostics] Improve diagnostic for defaulted accessor in a protocol property.
2021-02-24 10:17:53 -08:00
Pavel Yaskevich
74d2a6c700 [ConstraintSystem] Limit static member reference on protocol metatype to leading dot syntax only
Do not allow references to a static members with explicitly specified
protocol metatype base, limit that to leading dot syntax only.
2021-02-23 11:33:11 -08:00
Pavel Yaskevich
30f255755b [Diagnostics] NFC: Adjust all diagnostics improved/changed by static member refs on protocol metatypes feature 2021-02-23 11:33:10 -08:00
Pavel Yaskevich
7009207491 [ConstraintSystem] Adjust handling of incorrect member references on protocol metatypes
Since it's now possible to refer to static members declared on a protocol
metatype if result type conforms to the protocol we need to adjust failure
detection to identify that conformance failure means and invalid reference
in certain situations.
2021-02-23 11:32:24 -08:00
Robert Widmann
b8329b633e Merge pull request #36060 from CodaFi/codicil
Patch a Huge Soundness Hole in Codable Synthesis
2021-02-22 08:48:50 -08:00
Doug Gregor
d9e4184742 Make Error and CodingKey conform to ConcurrentValue.
Make both Error and CodingKey conform to ConcurrentValue, so that
thrown errors always conform to ConcurrentValue. Downgrade (to
warnings) and ConcurrentValue-related diagnostics that are triggered
by this change in existing Error and CodingKey-conforming types to
reduce the impact on source compatibility.
2021-02-20 22:01:28 -08:00
Robert Widmann
6c9fb0d55c Undo Bogus DiagnosticTransactions in Codable Synthesis
The order of diagnostic emission absolutely does not matter. What this transaction was actually doing was suppressing valid diagnostics. This is a deeply unsound thing to do since if errors are emitted but Codable synthesis succeeds then invalid code can make its way past Sema.

rdar://74392492
2021-02-19 16:58:38 -08:00
Anthony Latsis
a223d37ae7 Merge pull request #34140 from AnthonyLatsis/coself-array
AST, Sema: Teach findProtocolSelfReferences that some stdlib collections preserve variance
2021-02-13 19:45:15 +03:00
Minhyuk Kim
518e1b0a59 [Parse] Improve error for defaulted accessor in a protocol property. SR-13963 2021-02-12 22:40:33 +09:00
Slava Pestov
2d37b84aca Merge pull request #35909 from slavapestov/existential-type-unsupported-trigger
Sema: Don't need to explicitly calculate existentialTypeSupported()
2021-02-11 11:49:12 -05:00
Robert Widmann
e3c1c42576 Merge pull request #35894 from CodaFi/semantic-members-only
Look Through Class-Bound Archetypes When Installing Semantic Members
2021-02-11 07:26:16 -08:00
Slava Pestov
b81afe3c51 Sema: Don't need to explicitly calculate existentialTypeSupported() 2021-02-11 00:19:24 -05:00
Anthony Latsis
06ceb19ccf Diag: Fix inaccuracy in dynamic_self_invalid 2021-02-11 03:22:20 +03:00
Anthony Latsis
3d317938ad AST, Sema: Teach findProtocolSelfReferences that some stdlib collections preserve variance
* Swift.Array preserves variance in its 'Element' type
* Swift.Dictionary preserves variance in its 'Value' type
2021-02-11 03:22:20 +03:00
Robert Widmann
34ade3cc66 Also Look Though Class-Bound Protocol Compositions 2021-02-10 14:54:08 -08:00
Robert Widmann
09d540ac71 Look Through Class-Bound Archetypes When Installing Semantic Members
Before lookup was requestified, the entire lookup stack would
install semantic members. As this caused cycles in the lookup path, it
was refactored to instead only occur at the TypeChecker::lookup*
entrypoints. Unfortunately, these entrypoints were not kept in sync with
the stack building code in qualified lookup, so a case was missed:
class-bound archetypes. We need to synthesize semantic members for them
as well or we'll non-deterministically fail to find synthesizable
members in incremental mode.

rdar://74174749
2021-02-10 14:54:04 -08:00
Slava Pestov
07bd07926f AST: Implement extractNearestSourceLoc() for ProtocolConformance 2021-02-10 16:30:30 -05:00