Commit Graph

9699 Commits

Author SHA1 Message Date
Doug Gregor
8f23915334 [Type Checker] Introduce a request for “overridden declarations”.
Introduce a new request kind to capture the computation of the set of
overridden declarations of a given declaration, eliminating the
stateful “setOverriddenDecls()” calls from the type checker.
2018-07-18 14:50:38 -07:00
Doug Gregor
68463ce764 [Evaluator] Fix an egregious bug in move construction/assignment of AnyRequest
The default move constructor and move assignment operator of AnyRequest
would leave the source object in an odd state that’s destructible but
does not maintain the invariant that all “normal” states store a real
instance. This state breaks DenseMap, which assumes that a moved-from
object is still washable.
2018-07-18 14:50:38 -07:00
Doug Gregor
b07dd059a6 [Type Checker] Remove TypeChecker/LazyResolver parameters from name lookup.
Make the TypeChecker’s name-lookup routines static, so they don’t depend
on the TypeCheck instance… except for one pesky place where we jump back
into protocol conformance checking. This is part of teasing apart the type
checker.
2018-07-18 14:50:38 -07:00
swift-ci
9b0133f88a Merge remote-tracking branch 'origin/master' into master-next 2018-07-18 08:29:59 -07:00
David Zarzycki
6371d8d48c [AST] NFC: Use exhaustive switch in Decl::isBeingValidated() 2018-07-18 09:45:45 -04:00
swift-ci
2776303905 Merge remote-tracking branch 'origin/master' into master-next 2018-07-17 18:00:27 -07:00
Pavel Yaskevich
a9660c7bc5 Merge pull request #17860 from xedin/SE-0213
[TypeChecker] SE-0213: Implement literal init via coercion
2018-07-17 17:53:25 -07:00
swift-ci
a792448233 Merge remote-tracking branch 'origin/master' into master-next 2018-07-17 14:09:53 -07:00
Slava Pestov
8d6a55fedb Merge pull request #16655 from davezarzycki/formalize_DeclIsBeingValidatedRAII
[AST] NFC: Formalize Decl validation tracking via RAII
2018-07-17 14:07:53 -07:00
Pavel Yaskevich
1e4e9657cc [AST] Make it so coercion expr use for literal init is distinguishable 2018-07-17 12:08:59 -07:00
swift-ci
f60770e1e6 Merge remote-tracking branch 'origin/master' into master-next 2018-07-17 11:29:26 -07:00
David Zarzycki
bae6cc6017 Merge pull request #17767 from davezarzycki/enable_opt_unowned_unmanaged
Enable optional unowned/unowned(unsafe) references
2018-07-17 14:13:44 -04:00
swift-ci
9b12d01fc2 Merge remote-tracking branch 'origin/master' into master-next 2018-07-17 09:09:17 -07:00
Alex Hoppen
3bf94abbfc Merge pull request #17621 from ahoppen/002-sytnax-tree-based-coloring
[libSyntax] Syntax colouring based on the syntax tree
2018-07-17 08:54:51 -07:00
swift-ci
ee079d3e0a Merge remote-tracking branch 'origin/master' into master-next 2018-07-17 07:28:52 -07:00
Mark Lacey
c3b9cc8b0e Merge pull request #17996 from rudkx/remove-some-swift-3-compat-for-type-resolution
Remove a couple bits of Swift 3 compatibility code from type resolution.
2018-07-17 07:24:06 -07:00
Mark Lacey
97a6dc1328 Remove now-unused diagnostic. 2018-07-16 19:16:32 -07:00
swift-ci
9eb4e3a0a4 Merge remote-tracking branch 'origin/master' into master-next 2018-07-16 18:48:54 -07:00
Slava Pestov
fc80f75273 AST: Create new 'invalid' state for ProtocolConformanceRef 2018-07-16 16:44:27 -07:00
Slava Pestov
0c0ecba756 AST: Add new overload of ProtocolConformance{,Ref}::subst() taking a SubstitutionMap 2018-07-16 16:44:27 -07:00
swift-ci
9e940b1782 Merge remote-tracking branch 'origin/master' into master-next 2018-07-15 16:49:04 -07:00
Robert Widmann
c3867c8c48 Merge pull request #17964 from mdiep/enum-case-not-enum-element
Change "enum element" to "enum case" in diagnostics
2018-07-15 16:35:16 -07:00
Matt Diephouse
35592747db Change "enum element" to "enum case" in diagnostics
From the perspective of the compiler implementation, they're elements. But users will think of these as cases—and many diagnostics already refer to these as enum cases.
2018-07-15 16:01:10 -04:00
swift-ci
29a3f783a6 Merge remote-tracking branch 'origin/master' into master-next 2018-07-14 19:09:12 -07:00
Mark Lacey
eb57e209e3 Merge pull request #17691 from rudkx/remove-swift-3-in-expr-typechecking
Remove support for -swift-version 3 from the expression type checker.
2018-07-14 19:03:56 -07:00
swift-ci
c4e2158f70 Merge remote-tracking branch 'origin/master' into master-next 2018-07-13 23:49:31 -07:00
Doug Gregor
44088fa265 Merge pull request #17921 from DougGregor/optional-not-unwrapped-diags
[Type checker] Improve diagnostics when an optional value is not unwrapped
2018-07-13 23:43:25 -07:00
Alex Hoppen
dfad6f787f [Basic] Extract isEditorPlaceholder from Identifier to standalone function 2018-07-13 16:56:03 -07:00
Doug Gregor
5db1901d57 [Type checker] Emit coalesce-or-force-unwrap Fix-Its for necessary unwraps more consistently.
Replace the last (and most obscure) use of the poor “use ‘?’ or ‘!’” diagnostic with the
new, more explanatory version that provides separate notes with Fix-Its for coalescing or
force-unwrapping the value.

Finishes rdar://problem/42081852.
2018-07-13 16:48:15 -07:00
Doug Gregor
9ec3b00ea4 [Type Checker] Improve diagnostic when referencing a member of an optional base.
Improve diagnostics when referencing a member of an optional base, where the
Optional type does not have the member but the wrapped type does. Specifically,
suggest both the chaining ‘?’ and the force-unwrapping ‘!’ Fix-Its via explanatory
notes, e.g.:

  error: value of optional type '[Int]?' must be unwrapped to refer to member 'subscript' of wrapped base type '[Int]'
    return foo.array[0]
               ^
  note: chain the optional using '?' to access member 'subscript' only for non-'nil' base values
    return foo.array[0]
               ^
                    ?
  note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
    return foo.array[0]
               ^
                    !

More of rdar://problem/42081852.
2018-07-13 15:22:56 -07:00
swift-ci
e6011356fb Merge remote-tracking branch 'origin/master' into master-next 2018-07-13 14:39:37 -07:00
Doug Gregor
945c09b1cc [Type checker] Improve diagnostics when an optional value is not unwrapped.
When we determine that an optional value needs to be unwrapped to make
an expression type check, use notes to provide several different
Fix-It options (with descriptions) rather than always pushing users
toward '!'. Specifically, the errors + Fix-Its now looks like this:

    error: value of optional type 'X?' must be unwrapped to a value of
        type 'X'
      f(x)
        ^
    note: coalesce using '??' to provide a default when the optional
        value contains 'nil'
      f(x)
        ^
          ?? <#default value#>
    note: force-unwrap using '!' to abort execution if the optional
        value contains 'nil'
      f(x)
         ^
         !

Fixes rdar://problem/42081852.
2018-07-13 11:02:04 -07:00
Robert Widmann
c440b0ba5a Diagnose parse-only invocations trying to emit dependency information
Parse-only invocations do not support the proper creation of dependency files or reference dependency files because they have not yet run name binding.  Ban these invocations by diagnostic and add a new diagnostic specifically for reference dependencies.
2018-07-13 10:56:03 -07:00
swift-ci
ade24135e4 Merge remote-tracking branch 'origin/master' into master-next 2018-07-12 14:29:13 -07:00
Jordan Rose
07e56a4351 Sprinkle LLVM_READONLY on some potentially recursive accessors (#17913)
I picked accessors that not only return the same result every time,
but also do no interesting validation work with possible side effects.
We have a lot more accessors that return the same result but also
force a bunch of things to be loaded or diagnostics to be emitted, and
I didn't want to change the behavior of any of those.

No intended functionality change; this is just supposed to be a small
optimization hint.
2018-07-12 14:16:29 -07:00
David Zarzycki
b29d2784ed [AST] NFC: Formalize Decl validation tracking via RAII
After this change, RAII ensures that the validation state is accurate as
possible.
2018-07-12 10:30:26 -04:00
Mark Lacey
efb173857a Merge branch 'master' into remove-swift-3-in-expr-typechecking 2018-07-11 23:49:44 -07:00
swift-ci
1330254c53 Merge remote-tracking branch 'origin/master' into master-next 2018-07-11 22:29:24 -07:00
Rintaro Ishizaki
274114d4a2 Merge pull request #17852 from rintaro/parse-attr-invalid-sr8202
[Parse/Sema] Diagnose invalid attributes for ParamDecl and GenericTypeParamDecl
2018-07-12 14:12:45 +09:00
Mark Lacey
aa30cc5adc Merge branch 'master' into remove-swift-3-in-expr-typechecking 2018-07-11 20:55:32 -07:00
swift-ci
691e92eb8b Merge remote-tracking branch 'origin/master' into master-next 2018-07-11 16:29:41 -07:00
Brent Royal-Gordon
70f788ed7f Merge pull request #17656 from brentdax/thats-what-a-diagnostics-all-about
[Sema] Improve error for inout on conversion
2018-07-11 16:19:34 -07:00
swift-ci
72e50ab73f Merge remote-tracking branch 'origin/master' into master-next 2018-07-11 15:49:07 -07:00
Xi Ge
6d517e144a Merge pull request #17888 from nkcsgexi/local-parameter-bridge
migrator: handle changed parameter declarations by introducing bridging local variables.
2018-07-11 15:33:32 -07:00
Xi Ge
f83ccd6438 migrator: handle changed parameter declarations by introducing bridging local variables.
When users override a SDK function whose parameter types have been changed,
we should introduce a local variable in the body of the function definition
to shadow the changed parameter. Also, a proper conversion function should
be applied to bridge the parameter to the local variable.

rdar://41828411
2018-07-11 13:41:37 -07:00
David Zarzycki
71472cfa96 Enable optional unowned/unowned(unsafe) references
John okayed this change in a comment on GitHub pull request: #16237
2018-07-11 14:33:23 -04:00
swift-ci
d4634c8cc2 Merge remote-tracking branch 'origin/master' into master-next 2018-07-10 18:29:23 -07:00
Slava Pestov
8cd89bd709 Sema: Fix archetype vs interface type mixup with type in generic function 2018-07-10 17:01:12 -07:00
Brent Royal-Gordon
7545b1945f [Sema] Improve error for inout on conversion
The diagnostic when a user attempts to pass an argument requiring an implicit conversion (e.g. declared as a subclass, type conforming to protocol, etc.) to an inout parameter seems to be confusing for users—see e.g. SR-8155, SR-8148. This change replaces it with a more specific diagnostic which clearly suggests a solution. It also includes a fix-it suggesting the user change the type of the original variable if it’s a local with a simple type signature.
2018-07-10 12:31:36 -07:00
swift-ci
196b29576c Merge remote-tracking branch 'origin/master' into master-next 2018-07-10 10:09:26 -07:00