Skip to content

Commit f2af98a

Browse files
committed
---
yaml --- r: 347711 b: refs/heads/master c: ef47142 h: refs/heads/master i: 347709: e26d800 347707: 7c7bc47 347703: 25b8e11 347695: 0c5f731 347679: 16e2361 347647: fed6594
1 parent ae0b1f4 commit f2af98a

26 files changed

+130
-47
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 267d32cb2d9c3c5c98b7403e79b6978a1585c7a5
2+
refs/heads/master: ef47142518d383df3a8e6e12c436c4118e25d504
33
refs/heads/master-next: 203b3026584ecad859eb328b2e12490099409cd5
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea

trunk/include/swift/AST/GenericSignature.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,12 @@ class alignas(1 << TypeAlignInBits) GenericSignature final
312312
/// generic parameters to themselves.
313313
SubstitutionMap getIdentitySubstitutionMap() const;
314314

315+
/// Whether this generic signature involves a type variable.
316+
bool hasTypeVariable() const;
317+
318+
/// Whether the given set of requirements involves a type variable.
319+
static bool hasTypeVariable(ArrayRef<Requirement> requirements);
320+
315321
static void Profile(llvm::FoldingSetNodeID &ID,
316322
TypeArrayView<GenericTypeParamType> genericParams,
317323
ArrayRef<Requirement> requirements);

trunk/lib/AST/ASTContext.cpp

Lines changed: 49 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -245,16 +245,6 @@ FOR_KNOWN_FOUNDATION_TYPES(CACHE_FOUNDATION_DECL)
245245
/// Stores information about lazy deserialization of various declarations.
246246
llvm::DenseMap<const DeclContext *, LazyContextData *> LazyContexts;
247247

248-
/// Stored generic signature builders for canonical generic signatures.
249-
llvm::DenseMap<GenericSignature *, std::unique_ptr<GenericSignatureBuilder>>
250-
GenericSignatureBuilders;
251-
252-
/// Canonical generic environments for canonical generic signatures.
253-
///
254-
/// The keys are the generic signature builders in \c GenericSignatureBuilders.
255-
llvm::DenseMap<GenericSignatureBuilder *, GenericEnvironment *>
256-
CanonicalGenericEnvironments;
257-
258248
/// The single-parameter generic signature with no constraints, <T>.
259249
CanGenericSignature SingleGenericParameterSignature;
260250

@@ -327,6 +317,19 @@ FOR_KNOWN_FOUNDATION_TYPES(CACHE_FOUNDATION_DECL)
327317
llvm::FoldingSet<LayoutConstraintInfo> LayoutConstraints;
328318
llvm::FoldingSet<OpaqueTypeArchetypeType> OpaqueArchetypes;
329319

320+
llvm::FoldingSet<GenericSignature> GenericSignatures;
321+
322+
/// Stored generic signature builders for canonical generic signatures.
323+
llvm::DenseMap<GenericSignature *, std::unique_ptr<GenericSignatureBuilder>>
324+
GenericSignatureBuilders;
325+
326+
/// Canonical generic environments for canonical generic signatures.
327+
///
328+
/// The keys are the generic signature builders in
329+
/// \c GenericSignatureBuilders.
330+
llvm::DenseMap<GenericSignatureBuilder *, GenericEnvironment *>
331+
CanonicalGenericEnvironments;
332+
330333
/// The set of function types.
331334
llvm::FoldingSet<FunctionType> FunctionTypes;
332335

@@ -377,7 +380,6 @@ FOR_KNOWN_FOUNDATION_TYPES(CACHE_FOUNDATION_DECL)
377380
llvm::FoldingSet<SILBoxType> SILBoxTypes;
378381
llvm::DenseMap<BuiltinIntegerWidth, BuiltinIntegerType*> IntegerTypes;
379382
llvm::FoldingSet<BuiltinVectorType> BuiltinVectorTypes;
380-
llvm::FoldingSet<GenericSignature> GenericSignatures;
381383
llvm::FoldingSet<DeclName::CompoundDeclName> CompoundNames;
382384
llvm::DenseMap<UUID, OpenedArchetypeType *> OpenedExistentialArchetypes;
383385

@@ -1427,34 +1429,50 @@ void ASTContext::getVisibleTopLevelClangModules(
14271429
collectAllModules(Modules);
14281430
}
14291431

1432+
static AllocationArena getArena(GenericSignature *genericSig) {
1433+
if (!genericSig)
1434+
return AllocationArena::Permanent;
1435+
1436+
if (genericSig->hasTypeVariable())
1437+
return AllocationArena::ConstraintSolver;
1438+
1439+
return AllocationArena::Permanent;
1440+
}
1441+
14301442
void ASTContext::registerGenericSignatureBuilder(
14311443
GenericSignature *sig,
14321444
GenericSignatureBuilder &&builder) {
14331445
auto canSig = sig->getCanonicalSignature();
1434-
auto known = getImpl().GenericSignatureBuilders.find(canSig);
1435-
if (known != getImpl().GenericSignatureBuilders.end()) {
1446+
auto arena = getArena(sig);
1447+
auto &genericSignatureBuilders =
1448+
getImpl().getArena(arena).GenericSignatureBuilders;
1449+
auto known = genericSignatureBuilders.find(canSig);
1450+
if (known != genericSignatureBuilders.end()) {
14361451
++NumRegisteredGenericSignatureBuildersAlready;
14371452
return;
14381453
}
14391454

14401455
++NumRegisteredGenericSignatureBuilders;
1441-
getImpl().GenericSignatureBuilders[canSig] =
1456+
genericSignatureBuilders[canSig] =
14421457
llvm::make_unique<GenericSignatureBuilder>(std::move(builder));
14431458
}
14441459

14451460
GenericSignatureBuilder *ASTContext::getOrCreateGenericSignatureBuilder(
14461461
CanGenericSignature sig) {
14471462
// Check whether we already have a generic signature builder for this
14481463
// signature and module.
1449-
auto known = getImpl().GenericSignatureBuilders.find(sig);
1450-
if (known != getImpl().GenericSignatureBuilders.end())
1464+
auto arena = getArena(sig);
1465+
auto &genericSignatureBuilders =
1466+
getImpl().getArena(arena).GenericSignatureBuilders;
1467+
auto known = genericSignatureBuilders.find(sig);
1468+
if (known != genericSignatureBuilders.end())
14511469
return known->second.get();
14521470

14531471
// Create a new generic signature builder with the given signature.
14541472
auto builder = new GenericSignatureBuilder(*this);
14551473

14561474
// Store this generic signature builder (no generic environment yet).
1457-
getImpl().GenericSignatureBuilders[sig] =
1475+
genericSignatureBuilders[sig] =
14581476
std::unique_ptr<GenericSignatureBuilder>(builder);
14591477

14601478
builder->addGenericSignature(sig);
@@ -1525,12 +1543,16 @@ GenericSignatureBuilder *ASTContext::getOrCreateGenericSignatureBuilder(
15251543
GenericEnvironment *ASTContext::getOrCreateCanonicalGenericEnvironment(
15261544
GenericSignatureBuilder *builder,
15271545
GenericSignature *sig) {
1528-
auto known = getImpl().CanonicalGenericEnvironments.find(builder);
1529-
if (known != getImpl().CanonicalGenericEnvironments.end())
1546+
auto arena = getArena(sig);
1547+
auto &canonicalGenericEnvironments =
1548+
getImpl().getArena(arena).CanonicalGenericEnvironments;
1549+
1550+
auto known = canonicalGenericEnvironments.find(builder);
1551+
if (known != canonicalGenericEnvironments.end())
15301552
return known->second;
15311553

15321554
auto env = sig->createGenericEnvironment();
1533-
getImpl().CanonicalGenericEnvironments[builder] = env;
1555+
canonicalGenericEnvironments[builder] = env;
15341556
return env;
15351557
}
15361558

@@ -3774,10 +3796,14 @@ GenericSignature::get(TypeArrayView<GenericTypeParamType> params,
37743796
llvm::FoldingSetNodeID ID;
37753797
GenericSignature::Profile(ID, params, requirements);
37763798

3799+
auto arena = GenericSignature::hasTypeVariable(requirements)
3800+
? AllocationArena::ConstraintSolver
3801+
: AllocationArena::Permanent;
3802+
37773803
auto &ctx = getASTContext(params, requirements);
37783804
void *insertPos;
3779-
if (auto *sig = ctx.getImpl().GenericSignatures.FindNodeOrInsertPos(ID,
3780-
insertPos)) {
3805+
if (auto *sig = ctx.getImpl().getArena(arena).GenericSignatures
3806+
.FindNodeOrInsertPos(ID, insertPos)) {
37813807
if (isKnownCanonical)
37823808
sig->CanonicalSignatureOrASTContext = &ctx;
37833809

@@ -3790,7 +3816,7 @@ GenericSignature::get(TypeArrayView<GenericTypeParamType> params,
37903816
void *mem = ctx.Allocate(bytes, alignof(GenericSignature));
37913817
auto newSig = new (mem) GenericSignature(params, requirements,
37923818
isKnownCanonical);
3793-
ctx.getImpl().GenericSignatures.InsertNode(newSig, insertPos);
3819+
ctx.getImpl().getArena(arena).GenericSignatures.InsertNode(newSig, insertPos);
37943820
return newSig;
37953821
}
37963822

trunk/lib/AST/GenericSignature.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,3 +1042,28 @@ unsigned GenericSignature::getGenericParamOrdinal(GenericTypeParamType *param) {
10421042
.findIndexIn(getGenericParams());
10431043
}
10441044

1045+
bool GenericSignature::hasTypeVariable() const {
1046+
return hasTypeVariable(getRequirements());
1047+
}
1048+
1049+
bool GenericSignature::hasTypeVariable(ArrayRef<Requirement> requirements) {
1050+
for (const auto &req : requirements) {
1051+
if (req.getFirstType()->hasTypeVariable())
1052+
return true;
1053+
1054+
switch (req.getKind()) {
1055+
case RequirementKind::Layout:
1056+
break;
1057+
1058+
case RequirementKind::Conformance:
1059+
case RequirementKind::SameType:
1060+
case RequirementKind::Superclass:
1061+
if (req.getSecondType()->hasTypeVariable())
1062+
return true;
1063+
break;
1064+
}
1065+
}
1066+
1067+
return false;
1068+
}
1069+

trunk/lib/AST/GenericSignatureBuilder.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5404,9 +5404,15 @@ namespace {
54045404
ArrayRef<Constraint<T>> constraints,
54055405
llvm::function_ref<bool(const Constraint<T> &)>
54065406
isSuitableRepresentative) {
5407+
Optional<Constraint<T>> fallbackConstraint;
5408+
54075409
// Find a representative constraint.
54085410
Optional<Constraint<T>> representativeConstraint;
54095411
for (const auto &constraint : constraints) {
5412+
// Make sure we have a constraint to fall back on.
5413+
if (!fallbackConstraint)
5414+
fallbackConstraint = constraint;
5415+
54105416
// If this isn't a suitable representative constraint, ignore it.
54115417
if (!isSuitableRepresentative(constraint))
54125418
continue;
@@ -5457,7 +5463,8 @@ namespace {
54575463
representativeConstraint = constraint;
54585464
}
54595465

5460-
return representativeConstraint;
5466+
return representativeConstraint ? representativeConstraint
5467+
: fallbackConstraint;
54615468
}
54625469
} // end anonymous namespace
54635470

@@ -6996,9 +7003,11 @@ void GenericSignatureBuilder::checkConcreteTypeConstraints(
69967003
if (concreteType->isEqual(equivClass->concreteType))
69977004
return ConstraintRelation::Redundant;
69987005

6999-
// If either has a type parameter, call them unrelated.
7006+
// If either has a type parameter or type variable, call them unrelated.
70007007
if (concreteType->hasTypeParameter() ||
7001-
equivClass->concreteType->hasTypeParameter())
7008+
equivClass->concreteType->hasTypeParameter() ||
7009+
concreteType->hasTypeVariable() ||
7010+
equivClass->concreteType->hasTypeVariable())
70027011
return ConstraintRelation::Unrelated;
70037012

70047013
return ConstraintRelation::Conflicting;

trunk/lib/IRGen/GenStruct.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,10 @@ void IRGenModule::maybeEmitOpaqueTypeDecl(OpaqueTypeDecl *opaque) {
885885
// then emit all opaque type descriptors and make them runtime-discoverable
886886
// so that remote ast/mirror can recover them.
887887
addRuntimeResolvableType(opaque);
888-
emitOpaqueTypeDecl(opaque);
888+
if (IRGen.hasLazyMetadata(opaque))
889+
IRGen.noteUseOfOpaqueTypeDescriptor(opaque);
890+
else
891+
emitOpaqueTypeDecl(opaque);
889892
} else if (!IRGen.hasLazyMetadata(opaque)) {
890893
emitOpaqueTypeDecl(opaque);
891894
}

trunk/test/Parse/ConditionalCompilation/arm64AppleTVOSTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target arm64-apple-tvos9.0 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target arm64-apple-tvos9.0 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target arm64-apple-tvos9.0
33

44
#if os(iOS)

trunk/test/Parse/ConditionalCompilation/arm64IOSTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target arm64-apple-ios7.0 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target arm64-apple-ios7.0 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target arm64-apple-ios7.0
33

44
#if os(tvOS) || os(watchOS)

trunk/test/Parse/ConditionalCompilation/armAndroidTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target armv7-none-linux-androideabi -disable-objc-interop -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target armv7-none-linux-androideabi -disable-objc-interop -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target armv7-none-linux-androideabi
33

44
#if os(Linux)

trunk/test/Parse/ConditionalCompilation/armIOSTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target arm-apple-ios7.0 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target arm-apple-ios7.0 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target arm-apple-ios7.0
33

44
#if os(tvOS) || os(watchOS)

trunk/test/Parse/ConditionalCompilation/armWatchOSTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target arm-apple-watchos2.0 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target arm-apple-watchos2.0 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target arm-apple-watchos2.0
33

44
#if os(iOS)

trunk/test/Parse/ConditionalCompilation/i386AppleTVOSTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target i386-apple-tvos9.0 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target i386-apple-tvos9.0 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target i386-apple-tvos9.0
33

44
#if os(iOS)

trunk/test/Parse/ConditionalCompilation/i386IOSTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target i386-apple-ios7.0 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target i386-apple-ios7.0 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target i386-apple-ios7.0
33

44
#if os(tvOS) || os(watchOS)

trunk/test/Parse/ConditionalCompilation/i386WatchOSTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target i386-apple-watchos2.0 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target i386-apple-watchos2.0 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target i386-apple-watchos2.0
33

44
#if os(iOS)

trunk/test/Parse/ConditionalCompilation/powerpc64LinuxTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target powerpc64-unknown-linux-gnu -disable-objc-interop -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target powerpc64-unknown-linux-gnu -disable-objc-interop -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target powerpc64-unknown-linux-gnu
33

44
#if arch(powerpc64) && os(Linux) && _runtime(_Native) && _endian(big)

trunk/test/Parse/ConditionalCompilation/powerpc64leLinuxTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target powerpc64le-unknown-linux-gnu -disable-objc-interop -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target powerpc64le-unknown-linux-gnu -disable-objc-interop -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target powerpc64le-unknown-linux-gnu
33

44
#if arch(powerpc64le) && os(Linux) && _runtime(_Native) && _endian(little)

trunk/test/Parse/ConditionalCompilation/s390xLinuxTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target s390x-unknown-linux-gnu -disable-objc-interop -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target s390x-unknown-linux-gnu -disable-objc-interop -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target s390x-unknown-linux-gnu
33

44
#if arch(s390x) && os(Linux) && _runtime(_Native) && _endian(big)

trunk/test/Parse/ConditionalCompilation/trailingClosureOnTargetConfig.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAZ -target x86_64-apple-macosx10.9 -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target x86_64-apple-macosx10.9 -parse-stdlib
22

33
struct Foo {}
44

trunk/test/Parse/ConditionalCompilation/x64AppleTVOSTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target x86_64-apple-tvos9.0 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target x86_64-apple-tvos9.0 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target x86_64-apple-tvos9.0
33

44
#if os(iOS)

trunk/test/Parse/ConditionalCompilation/x64CygwinTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target x86_64-unknown-windows-cygnus -disable-objc-interop -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target x86_64-unknown-windows-cygnus -disable-objc-interop -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target x86_64-unknown-windows-cygnus
33

44
#if arch(x86_64) && os(Cygwin) && _runtime(_Native) && _endian(little)

trunk/test/Parse/ConditionalCompilation/x64FreeBSDTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target x86_64-unknown-freebsd10 -disable-objc-interop -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target x86_64-unknown-freebsd10 -disable-objc-interop -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target x86_64-unknown-freebsd10
33

44
#if arch(x86_64) && os(FreeBSD) && _runtime(_Native) && _endian(little)

trunk/test/Parse/ConditionalCompilation/x64IOSTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target x86_64-apple-ios7.0 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target x86_64-apple-ios7.0 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target x86_64-apple-ios7.0
33

44
#if os(tvOS) || os(watchOS)

trunk/test/Parse/ConditionalCompilation/x64LinuxTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target x86_64-unknown-linux-gnu -disable-objc-interop -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target x86_64-unknown-linux-gnu -disable-objc-interop -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target x86_64-unknown-linux-gnu
33

44
#if arch(x86_64) && os(Linux) && _runtime(_Native) && _endian(little)

trunk/test/Parse/ConditionalCompilation/x64OSXTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target x86_64-apple-macosx10.9 -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target x86_64-apple-macosx10.9 -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target x86_64-apple-macosx10.9
33

44
#if arch(x86_64) && os(OSX) && _runtime(_ObjC) && _endian(little)

trunk/test/Parse/ConditionalCompilation/x64WindowsTarget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %swift -typecheck %s -verify -D FOO -D BAR -target x86_64-unknown-windows-msvc -disable-objc-interop -D FOO -parse-stdlib
1+
// RUN: %swift -typecheck %s -verify -target x86_64-unknown-windows-msvc -disable-objc-interop -parse-stdlib
22
// RUN: %swift-ide-test -test-input-complete -source-filename=%s -target x86_64-unknown-windows-msvc
33

44
#if arch(x86_64) && os(Windows) && _runtime(_Native) && _endian(little)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// RUN: %target-swift-frontend -emit-ir -o /dev/null %s
2+
3+
protocol P {
4+
associatedtype AT
5+
func foo() -> AT
6+
}
7+
8+
struct X<C1: Collection, C2: Collection, T>: P
9+
where C1.Element == C2.Element
10+
{
11+
func foo() -> some P {
12+
return self
13+
}
14+
}

0 commit comments

Comments
 (0)