Commit Graph

62 Commits

Author SHA1 Message Date
Doug Gregor
96aec03e68 Verify that an archetype is not referenced outside of its scope.
The changes to the decl/ext/generic test strip out testing of
extensions of nested generics, a feature whose syntax will change and
is fairly broken already.

Swift SVN r21750
2014-09-05 22:46:32 +00:00
Doug Gregor
7bc2309b34 Maintain some more type sugar through substitution involving dependent types
... not because it's useful for the user, but because it props up our
broken model for computing generic types.

Swift SVN r20852
2014-07-31 21:33:38 +00:00
Doug Gregor
d1f7336853 Infer requirements from the where clause of a generic parameter list.
This happens to be the rest of <rdar://problem/14691708>, but it's in
service of <rdar://problem/16974298>.

Swift SVN r20836
2014-07-31 18:12:12 +00:00
Doug Gregor
aa275ea3f6 Use the generic parameters of the context of a member to substitute into its type.
Swift SVN r20812
2014-07-31 05:15:10 +00:00
Joe Groff
baf466b55b Sema: Diagnose nested generics.
<rdar://problem/16028090>

Swift SVN r20808
2014-07-31 03:35:01 +00:00
Doug Gregor
e4b37bc105 Properly check whether we're in an extension when determining settability of a 'let' property.
We were checking for exact type equality of the DeclContexts, which
will not hold when extensions have their own archetypes. A near-term
fix would be to use interface types, but checking the nominal types is
a better long-term solution.

Swift SVN r20768
2014-07-30 20:27:33 +00:00
Doug Gregor
2550881420 Wire up and validate multiple levels of generic parameters in extensions.
This allows us to type-check extensions of nested generics, e.g.,

  extension Outer<T>.Inner<A, B> { ... }



Swift SVN r20738
2014-07-30 05:56:58 +00:00
Doug Gregor
b6394479a3 Test module names in extension matching.
Swift SVN r20731
2014-07-30 04:32:34 +00:00
Doug Gregor
fbbfe266f9 Check presence/absence/arity of generic parameters during extension binding.
Extension binding decides which nominal type declaration is extended
by a given extension, so perform basic validation to ensure that the
generic parameter lists provided in the extension make sense. Note
that we're not checking the actual generic parameters properly in
the nested case, so none of this actually works at all. That will come
next, over in extension validation.

Swift SVN r20724
2014-07-29 23:53:45 +00:00
Doug Gregor
657c53fb18 Small test of name lookup behavior for extensions with generic parameters.
Swift SVN r20707
2014-07-29 22:43:19 +00:00
Doug Gregor
2162893fbe Start validating the generic parameters on extensions.
Extensions must have the same number of generic parameters as the
generic type they extend, and cannot add any additional requirements
beyond those on the extended generic type (yet!). We use requirement
inference to allow one to provide fewer requirements on the extension
than exist on the generic type. The expectation here is that one won't
ever repeat the requirements from the generic type.

Swift SVN r20706
2014-07-29 22:43:18 +00:00
Doug Gregor
a0bc9274db Change parsing and representation of extensions to accommodate generic parameters.
The eventual goal for extensions of generic types is to require them
to specify their generic parameters, e.g.,

  extension Array<T> { ... }

rather than today's

  extension Array { ... }

Start parsing (optional) generic parameters here, and update the
representation of ExtensionDecl to accomodate this new grammar
production. Aside from the parser changes, there's no intended
functionality change here.

Swift SVN r20682
2014-07-29 19:17:00 +00:00