Commit Graph

12606 Commits

Author SHA1 Message Date
Graydon Hoare
babf6ffaad Merge pull request #7827 from graydon/compilation-cleanup
Compilation cleanup
2017-03-01 16:06:52 -08:00
Doug Gregor
348c6b8001 Protocol conformance: store conformances needed for the requirement signature.
The protocol conformance checker verifies that all of the requirements
in the protocol's requirement signature are fulfilled. Save the
conformances from that check into the NormalProtocolConformance,
because this is the record of how that concrete type satisfies the
protocol requirements.

Compute, deserialize, and verify this information, but don't use it
for anything just yet. We'll use this to eliminate the "inherited
protocol map" and possibility some redundant type-witness
information.
2017-03-01 15:32:50 -08:00
Erik Eckstein
be986d753c demangler: add an API to check if a function has the swiftcc calling convention 2017-03-01 14:16:38 -08:00
Graydon Hoare
ec5d4f3ea1 [Driver] Put new job-lifecycle diagnostic chatter behind another option. 2017-03-01 09:07:21 -08:00
Rintaro Ishizaki
1f3c66226c [LangOptions] Introduce a new enum class for platform conditions (#7843) 2017-03-02 01:58:20 +09:00
Joe Groff
c6dc44d5de Merge pull request #7841 from jckarter/leading-dot-pattern-fallback
Sema: Let `.foo` patterns fall back to being ExprPatterns if they don't match an enum case.
2017-03-01 08:55:25 -08:00
Doug Gregor
ec4bf005af [AST] Eliminate unnecessary #includes of AST/ProtocolConformance.h. 2017-03-01 08:22:39 -08:00
Slava Pestov
2b5d974301 SIL: SILType::subst() can now take a generic signature
In order to lower replacement types that appear in lowered
position, we need to know the generic signature of the
original type.

Allow this to be passed in explicitly, but fall back to
the push/pop generic context if not present.

This is a first step toward eliminating the push/pop of
the generic context.

Fixes <rdar://problem/29711782>.
2017-03-01 00:28:23 -08:00
Slava Pestov
ec1d9fcfc7 SIL: Remove TypeConverter::substFunctionType() 2017-03-01 00:27:57 -08:00
Slava Pestov
15b46e3db0 Merge pull request #7839 from slavapestov/generic-capture-promotion
Generic capture promotion
2017-02-28 21:56:14 -08:00
Joe Groff
fc16cb5dda Sema: Let .foo patterns fall back to being ExprPatterns if they don't match an enum case.
This lets you match `case .foo` when `foo` resolves to any static member, instead of only a `case`, albeit without the exhaustiveness checking and subpattern capabilities of proper cases. While we're here, adjust the type system we set up for unresolved patterns embedded in expressions so that we give better signal in the error messages too.
2017-02-28 21:51:39 -08:00
swift-ci
a2b594aa9a Merge pull request #7833 from DougGregor/superclass-constraints 2017-02-28 21:41:14 -08:00
Slava Pestov
4138381e4e SIL: Remove SILType::substFuncType() 2017-02-28 20:52:43 -08:00
swift-ci
af53cb9778 Merge pull request #7733 from rintaro/parse-ifconfig-refactoring 2017-02-28 19:10:59 -08:00
Doug Gregor
d1627dcc83 [GSB] Check superclass constraints against concrete constraints.
Centralize the checking of a superclass constraint against a
same-type-to-concrete constraint. Additionally, produce a warning if
the superclass constraint is satisfied but is made redundant by an
existing same-type constraint.
2017-02-28 16:39:58 -08:00
Doug Gregor
cdb38c1e97 [GSB] Check all superclass constraints during finalization.
Use the same infrastructure we have for same-type-to-concrete
constraints to check superclass constraints. Specifically,

* Track all superclass constraints; never "update" a requirement source
* Remove self-derived superclass constraints
* Pick the best superclass constraint within each connected component
  of an equivalence class and use that for requirement generation.
* Diagnose conflicting superclass requirements during finalization
* Diagnose redundant superclass requirements (during finalization)
2017-02-28 16:14:30 -08:00
Graydon Hoare
4583e910b8 [Driver] Extract dependencyLoadFailed, add optional warning. 2017-02-28 15:17:26 -08:00
Graydon Hoare
ab5201f60e [Driver] Make PerformJobsState a mostly-private class. 2017-02-28 15:17:26 -08:00
Graydon Hoare
a13a0dfbba [Driver] Factor out some Job-logging support. 2017-02-28 15:17:22 -08:00
Doug Gregor
a97fa06744 [GSB] Factor out the checking of of the concrete-type constraints.
This checking will also be used for other kinds of constraints (e.g.,
superclass constraints), so factor it out in advance.
2017-02-28 14:52:51 -08:00
David Farler
c958cd65eb [Syntax] Allow UnknownSyntax to have children
This will make it easier to incrementally implement syntax nodes,
while allowing us to embed nodes that we do know about inside ones
that we don't.

https://bugs.swift.org/browse/SR-4062
2017-02-28 14:30:57 -08:00
Graydon Hoare
01655789a0 [Driver] Move some function-local state into PerformJobState. 2017-02-28 13:22:20 -08:00
swift-ci
916301772e Merge pull request #7819 from jrose-apple/time-for-an-update 2017-02-28 12:33:23 -08:00
Jordan Rose
c5f452b443 -debug-time-compilation: Fix 2f21735 to actually distinguish phases.
https://bugs.swift.org/browse/SR-4100
2017-02-28 11:31:13 -08:00
Doug Gregor
1c6757f946 Merge pull request #7812 from DougGregor/self-derived-constraints
[GenericSignatureBuilder] Remove self-derived same-type-to-concrete constraints.
2017-02-28 11:22:18 -08:00
Jordan Rose
3639343c53 [Serialization] Distinguish between protocol/extension for types too. (#7794)
Replace an existing flag for cross-references to member types (that
wasn't getting much use) with one consistent with how we lookup
values. This fixes the case where someone actually has a useful type
as a member of a protocol extension, and that type gets referenced in
another module; Dispatch does exactly this.

Because you can currently only define typealiases in protocol
extensions, not new types, there's always a workaround for someone
hitting this issue: just use the underlying type.

https://bugs.swift.org/browse/SR-4076
2017-02-28 10:36:46 -08:00
Doug Gregor
5ec385797f [GSB] Remove self-derived same-type-to-concrete constraints.
Introduce an operation on RequirementSource to determine whether a
constraint with such a source, when it lands on a given potential
archetype, is "self-derived": e.g., the final constraint is derived
from the original constraint. Remove such constraints from the system
during finalization, because otherwise they would make the original
constraint redundant.

Fixes rdar://problem/30478915, although we still need to apply this
same logic to other kinds of constraints in the system.
2017-02-28 09:47:30 -08:00
Doug Gregor
c2da97172b [GSB] Store the root potential archetype in RequirementSource.
Use TrailingObjects to help us efficiently store the root potential
archetype within requirement sources, so we can reconstruct the
complete path from the point where a requirement was created to the
potential archetype it affects.

The test changes are because we are now dumping the root potential
archetype as part of -debug-generic-signatures.
2017-02-28 09:47:11 -08:00
Doug Gregor
2d430d8324 [GSB] Always pass a root potential archetype to a requirement source.
Whenever we create a (root) requirement source, associate it with the
potential archetype on which the requirement is written. This lets us
follow a requirement source from the (stated or implied) requirement on
the root potential archetype to the effective requirement on the
resulting potential archetype.

Introduce FloatingRequirementSource for the cases where we need to
state what the root source is, but don't yet have a potential
archetype to attach it to. These get internally resolved to
RequirementSources as soon as possible.
2017-02-28 09:47:02 -08:00
Doug Gregor
dbf5782d56 [GSB] Provide a root potential archetype for requirement-signature sources. 2017-02-28 09:42:06 -08:00
Doug Gregor
f7bc907d23 [GSB] Provide a root potential archetype for nested-type-name-match sources. 2017-02-28 09:41:52 -08:00
Doug Gregor
40a813bc8d [GenericSigBuilder] Sink RequirementSource into GenericSignatureBuilder. 2017-02-28 09:41:23 -08:00
Doug Gregor
6adeb2db5d [GenericSigBuilder] Track associated type declarations in RequirementSource. 2017-02-28 09:37:06 -08:00
Graydon Hoare
94f30aacd5 Merge pull request #7705 from graydon/rdar-30615193-defer-module-import-from-bridging-header-until-finished-parse
[Clang Importer] Defer module imports to end of bridging-header parse.
2017-02-27 22:38:02 -08:00
Doug Gregor
5c2fe3496f Merge pull request #7740 from huonw/parse-assoc-type-where
(Mostly) Type-check where clauses on associated types
2017-02-27 22:06:51 -08:00
Slava Pestov
3c6835433e Merge pull request #7798 from slavapestov/spring-cleaning
Spring cleaning
2017-02-27 20:44:02 -08:00
David Farler
6a51c49752 Merge pull request #7790 from bitjammer/sr-4044-function-call-expr-syntax
[Syntax] Implement stuff for function call expressions
2017-02-27 20:19:45 -08:00
Slava Pestov
0611d663b8 SIL: Remove SILType::getSwiftType() 2017-02-27 20:01:35 -08:00
Slava Pestov
83ca7a852f AST: Remove TypeBase::getClassBound() 2017-02-27 20:00:36 -08:00
Slava Pestov
79d43c5316 AST: More correct TypeBase::isSpecialized()
Previously this would return true for non-nominal types that
contained a bound generic, such as function types, which makes
no sense.
2017-02-27 20:00:36 -08:00
Slava Pestov
721e6178f5 AST: Remove TypeBase::isUnspecializedGeneric() 2017-02-27 20:00:35 -08:00
Roman Levenstein
ba2753648f Merge pull request #7795 from swiftix/sil-cloner-fixes
[sil-cloner]  Fix a bug related to remapping of opened existentials during SIL function cloning
2017-02-27 16:49:02 -08:00
swift-ci
9f83b36fe5 Merge pull request #7799 from DougGregor/requires-class-slow-noninfinite 2017-02-27 16:45:29 -08:00
Roman Levenstein
39bae7cac9 [sil-cloner] Fix a bug related to remapping of opened existentials during SIL function cloning
Also take the opportunity to simplify the code and tighten the assertions.
The commit does not contain a test-case, because it is kind of difficult to provide a reduced one.

The idea of the fix stems from @slavapestov. I just provided minor improvements and tested it on a very big test-case to see that it fixes the bug.
2017-02-27 16:23:03 -08:00
Doug Gregor
fafb244ee4 [AST] Add ProtocolDecl::walkInheritedProtocols.
Use this in ProtocolDecl::requiresClassSlow(), and hope its presence
discourages more potentially-infinitely-recursive walks of the
inherited-protocols lists.
2017-02-27 15:57:18 -08:00
Joe Shajrawi
4b6cfaf533 Merge pull request #7796 from shajrawi/deinit_existential
Support for deinit of opaque existentials: deinit_existential_opaque instruction + SILGen support
2017-02-27 15:43:32 -08:00
Graydon Hoare
49231a35e6 [Clang Importer] Make ClangModuleUnit owned by ClangImporter::Implementation. 2017-02-27 15:05:07 -08:00
Joe Shajrawi
16b6cb5e1d Support for deinit of opaque existentials: deinit_existential_opaque instruction + SILGen support 2017-02-27 14:46:43 -08:00
Jordan Rose
67d2224585 Merge pull request #7756 from jrose-apple/small-multi-name-import-fixes
Several small fixes for importing alternate names
2017-02-27 14:01:21 -08:00
David Farler
c8bb2b8c32 [Syntax] Implement function-call-expression in lib/Syntax
Also includes for its substructure:
- function-call-argument
- function-call-argument-list
- symbolic-reference-expression (for the call target)

https://bugs.swift.org/browse/SR-4044
2017-02-27 13:57:27 -08:00