Commit Graph

6013 Commits

Author SHA1 Message Date
Rintaro Ishizaki
cfe742d1eb [Parse] Minor improvements in conditional compilation block parsing
* Don't emit duplicated 'expected #else or #endif at end of conditional
  compilation block' error.

    class Foo {
      #if true
        func foo() {}
    [EOF]

* Improve error message when seeing '}' in config block.

    class Foo {
    #if true
        func foo();
    } // error: unexpected '}' in conditional compilation block
    #else
    #endif
2017-02-16 11:35:51 +09:00
Argyrios Kyrtzidis
c309fb2620 Merge pull request #7477 from akyrtzi/fsystem-search-path-option2
Add '-Fsystem' framework search option to indicate path for frameworks that should be treated as 'system'
2017-02-15 12:04:36 -08:00
Slava Pestov
c2d07bc210 AST: Cache the result of ClassDecl::checkObjCAncestry() 2017-02-14 22:35:27 -08:00
Xi Ge
143c5a5d82 Address @jrose-apple's code review comments (#7474) 2017-02-14 18:41:21 -08:00
Argyrios Kyrtzidis
ca906d1e99 Add '-Fsystem' framework search option to indicate path for frameworks that should be treated as 'system'
This has the effect of propagating the search path to the clang importer as '-iframework'.
It doesn't affect whether a swift module is treated as system or not, this can be done as follow-up enhancement.
2017-02-14 16:13:25 -08:00
Slava Pestov
fd40597d90 Sema: Extend prohibition of @_inlineable designated initializers to classes
This check only applied to struct and enum initializers previously,
but that was an oversight.
2017-02-14 15:48:26 -08:00
Slava Pestov
50b5d01dd7 Sema: Tighten up rules for @_inlineable
- Don't allow @_inlineable on stored properties; this generates
  invalid SIL since clients can't know about stored properties of
  resilient types. Accessors for stored properties of non-resilient
  types are already @_inlineable anyway.

- Don't allow @_inlineable on declarations that are not public or
  @_versioned, since it's simply redundant.
2017-02-14 15:48:26 -08:00
Xi Ge
055da1fbfb [SourceKit] Teach name translation request to translate Swift names to ObjC ones (by using PrintAsObjC). (#7449) 2017-02-14 14:25:52 -08:00
practicalswift
65b0219f7b [gardening] Fix typos 2017-02-14 20:04:08 +01:00
practicalswift
3e40296cfa [gardening] Fix inconsistent headers 2017-02-13 15:21:52 +01:00
Slava Pestov
c5dfb5238a AST: Completely hide internal representation of SubstitutionMap
Make the addSubstitution() and addConformance() methods private,
and declare GenericEnvironment and GenericSignature as friends of
SubstitutionMap.

At some point in the future, we can switch to a more efficient
representation of SubstitutionMap, where instead of storing
multiple hashtables, we store arrays; the keys are pre-determined.
2017-02-12 01:42:36 -08:00
Slava Pestov
f1dcf5af1e AST: Write some more fake code for conformance lookup in signature
This just fixes the warning about 'Sig' being an unused
member of LookUpConformanceInSignature.
2017-02-12 00:51:27 -08:00
Slava Pestov
5296d02485 AST: More include-what-you-use gardening 2017-02-12 00:51:26 -08:00
Slava Pestov
ec4a95be21 AST: Witness stores SubstitutionList instead of SubstitutionMap
This simplifies serialization and removes some calls of
SubstitutionMap::addSubstitution() and addConformance().
2017-02-12 00:51:26 -08:00
Doug Gregor
b6d54431cb Merge pull request #7398 from huonw/gsb-cleanups
[Generic signature builder] Substitute requirements instead of threading a PA around.
2017-02-11 18:48:05 -08:00
Doug Gregor
aa42045d66 [AST] “Error” types aren’t really unchecked; deal with them explicitly. 2017-02-11 00:04:13 -08:00
Rintaro Ishizaki
49d134f1a9 [Parse] Stop lying about QuestionLoc of implicit OptionalTypeRepr (#7384)
In conditional statement let/var patterns.
Set invalid location instead.
2017-02-11 13:39:51 +09:00
Huon Wilson
f1dba0e7e8 [Generic signature builder] Substitute requirements instead of threading a PA around.
This essentially undoes the implementation in 51da51dfc0, which
implicitly did a substitution of the Self type in a protocol's
requirement signature by threading around the replacement PA. This is
brittle because every part of the code needs to take and pass around the
argument. By preemptively substituting, the whole requirement is in the
right form from the time it enters `addRequirement`.

The infrastructure here also allows simplifying some code.
2017-02-10 18:58:56 -08:00
Doug Gregor
579af863c5 Rename ArchetypeBuilder -> GenericSignatureBuilder 2017-02-10 12:46:34 -08:00
Doug Gregor
c6cbd13d31 [ArchetypeBuilder] Eliminate expandGenericEnvironment().
Remove the pre-expansion of all of the archetypes in a generic
environment; they can be constructed lazily from interface types.

Note that this only concerns the construction of the archetypes
themselves. The archetype builder is still pre-expanding all
*potential* archetypes.

"Fixes" rdar://problem/30351514, in the sense that the eager code and
the assertion that was getting tripped up are being eliminated
completely.
2017-02-10 01:44:40 -08:00
Doug Gregor
b412961003 [AST] Maintain type sugar in TypeMatcher. 2017-02-09 15:03:34 -08:00
Doug Gregor
8ccff752c5 [AST] Don't recursively match DependentMemberTypes.
Matching two dependent member types has nothing to do with matching
the bases; they're independent type parameters.
2017-02-09 14:09:19 -08:00
Doug Gregor
ae6be9fd77 [Archetype builder] Refactor same-type requirement checking slightly. 2017-02-09 14:09:18 -08:00
swift-ci
ec5a1c2265 Merge pull request #7367 from gottesmm/no_return_refactoring 2017-02-09 13:40:43 -08:00
swift-ci
bb874934f9 Merge pull request #7313 from huonw/requirement-signature-archetype-builder 2017-02-09 12:02:42 -08:00
Michael Gottesman
805786a913 [sil] Define SILFunctionType::isNoReturnFunction().
This just moves a bunch of queries that used information on SILFunction to
determine this property to just call a helper on SILFunctionType itself.

Centralized logic is good.

rdar://29791263
2017-02-09 11:29:40 -08:00
Jacob Bandes-Storch
e1fd8aa6c7 [Parse] Fix crash in conditional compilation parsing (#7331) 2017-02-08 23:10:26 -08:00
Slava Pestov
2eb25d413a Merge pull request #7356 from slavapestov/fix-nested-type-extension
Sema: Fix crash when defining an extension of a nested type with constrains
2017-02-08 22:18:04 -08:00
Rintaro Ishizaki
ff826e3491 [Parse] Limit max nesting level of StructureMarkerRAII (#7330)
The threshold is 256, for now.
2017-02-09 15:04:09 +09:00
Slava Pestov
707083d22f Sema: Fix crash when defining an extension of a nested type with constraints
If the nested type itself has generic constraints, we would
hit an assertion in requirement inference. Refactor some code
so that we can make the assertion more accurate.

Fixes <rdar://problem/30353095>.
2017-02-08 21:51:19 -08:00
Jacob Bandes-Storch
f2d426f285 [AST] CaptureListExpr's body is always a ClosureExpr (#7326) 2017-02-08 20:25:39 -08:00
Slava Pestov
3652190866 Merge pull request #7346 from slavapestov/misc-gardening
Add a couple of regression tests and make a small cleanup
2017-02-08 20:00:23 -08:00
Michael Gottesman
49506557e3 [sil] Change SILResultInfo::getOwnershipKind to always take a CanGenericSignature.
This caused a crasher when running the ownership verifier. I don't have a test
case right now, since it happened several weeks ago.

The bug can not happen again since I eliminated the nullptr default argument.

rdar://29791263
2017-02-08 16:43:38 -08:00
Huon Wilson
ad5e17945f [AST] Diagnose recursive requirements whenever they appear.
Previously, these were only diagnosed in some situations, but the
compiler is becoming more flexible about when things get fed into
different places, and so can crop up elsewhere.
2017-02-08 16:26:31 -08:00
Slava Pestov
a16faae73b AST: Move ProtocolConformance::getTypeWitnessByName() to ProtocolConformanceRef
I need to move some #includes around ("include what you use") to
break circularities for an upcoming refactoring.
2017-02-08 15:33:46 -08:00
Huon Wilson
51da51dfc0 [AST] Use the requirement signature in the ArchetypeBuilder.
The requirement signature is far more compact than looking at all the members.
2017-02-08 13:09:36 -08:00
Huon Wilson
74091fbcef [AST] Store and serialize a protocol's requirement signature.
This is the "canonical" representation of the type-level requirements of
a protocol, and we intend to use it pervasively in the compiler.
2017-02-08 13:08:31 -08:00
Huon Wilson
a834780b0b [AST] PotentialArchetype's ConcreteTypeSource is in the Representative.
The correct/canonical ConcreteType and ConcreteTypeSource are both
stored in the Representative, but previously only the getter for the
former was tranversing the chain.
2017-02-08 13:08:31 -08:00
Slava Pestov
bd4f31025f AST: GenericEnvironment::mapTypeIntoContext() no longer needs to take a ModuleDecl
Now, use LookUpConformanceInSignature instead.
2017-02-07 19:25:34 -08:00
Slava Pestov
2aea662cb7 AST: Introduce a new LookUpConformanceInSignature functor
For now, it "cheats" and performs the lookup in the module
declaring the protocol. This will change shortly.
2017-02-07 19:25:34 -08:00
Roman Levenstein
1e46f13184 Merge pull request #7321 from swiftix/layout-constraint-fixes
Layout constraint fixes
2017-02-07 18:37:35 -08:00
Jacob Bandes-Storch
c98e515734 [QoI] Improvements to function call & closure diagnostics (#7224) 2017-02-07 17:36:11 -08:00
Roman Levenstein
e5d5d7d5fd Some LayoutConstraint improvements.
This biggest change is:
- LayoutConstraintInfo is now a FoldingSetNode, which allows for proper canonicalization of LayoutConstraints. This is important for the correctness of type comparisons if types contain layout constraints.

No functionality changes from the client's point of view.
2017-02-07 17:03:11 -08:00
Doug Gregor
d34062455c Eliminate GenericEnvironment::clearGenericEnvironment(). NFC
Archetype builders used to create generic environments never go away,
so clearing them doesn't make sense anymore.
2017-02-07 15:50:29 -08:00
Slava Pestov
b8fd9e7259 AST: Move the well-formedness check from mangling to GenericSignature constructor 2017-02-07 15:30:39 -08:00
Doug Gregor
06f4c2fe4e Remove ArchetypeBuilder::getGenericEnvironment(). It's unused now 2017-02-07 15:22:50 -08:00
Doug Gregor
efe6175358 [Type Checker] Use GenericSignature::createGenericEnvironment().
New generic environments should be created directly from the generic
signature, without having to explicitly create an archetype
builder. Now, only the canonical archetype builders are ever used to
create a generic environment.
2017-02-07 15:22:50 -08:00
Jordan Rose
e4c3ae5794 Merge pull request #7312 from jrose-apple/print-stats-requires-assertions
[test] Disable -print-stats Serialization tests for no-asserts builds
2017-02-07 15:03:00 -08:00
Jordan Rose
f061ea435c Warn when using -print-stats on a release build.
This should make it easier to catch issues like the previous commit
in the future.
2017-02-07 13:31:01 -08:00
swift-ci
9cfa949891 Merge pull request #7307 from DougGregor/cleanup-potential-archetype 2017-02-07 11:40:37 -08:00