Skip to content

Commit 38171a3

Browse files
authored
Merge pull request #24490 from slavapestov/nscoding-test-deploy-target
Sema: Tweak test/decl/protocol/conforms/nscoding.swift a bit
2 parents 1192b91 + c954dfa commit 38171a3

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

test/decl/protocol/conforms/nscoding.swift

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1+
// RUN: %empty-directory(%t)
2+
13
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s -verify
24
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s -disable-nskeyedarchiver-diagnostics 2>&1 | %FileCheck -check-prefix CHECK-NO-DIAGS %s
35

4-
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s -dump-ast > %t.ast
5-
// RUN: %FileCheck %s < %t.ast
6+
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s -dump-ast -target x86_64-apple-macosx10.14.3 > %t/old.ast
7+
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s -dump-ast -target x86_64-apple-macosx10.14.4 > %t/new.ast
8+
9+
// RUN: %FileCheck --check-prefix=CHECK-OLD %s < %t/old.ast
10+
// RUN: %FileCheck --check-prefix=NEGATIVE %s < %t/old.ast
11+
// RUN: %FileCheck --check-prefix=NEGATIVE --check-prefix=NEGATIVE-NEW %s < %t/new.ast
612

7-
// REQUIRES: objc_interop
13+
// REQUIRES: OS=macosx
814

915
// CHECK-NO-DIAGS-NOT: NSCoding
1016
// CHECK-NO-DIAGS-NOT: unstable
1117

1218
import Foundation
1319

1420
// Top-level classes
15-
// CHECK-NOT: class_decl{{.*}}"CodingA"{{.*}}@_staticInitializeObjCMetadata
21+
// NEGATIVE-NOT: class_decl{{.*}}"CodingA"{{.*}}@_staticInitializeObjCMetadata
1622
class CodingA : NSObject, NSCoding {
1723
required init(coder: NSCoder) { }
1824
func encode(coder: NSCoder) { }
@@ -21,7 +27,7 @@ class CodingA : NSObject, NSCoding {
2127

2228
// Nested classes
2329
extension CodingA {
24-
// CHECK-NOT: class_decl{{.*}}"NestedA"{{.*}}@_staticInitializeObjCMetadata
30+
// NEGATIVE-NOT: class_decl{{.*}}"NestedA"{{.*}}@_staticInitializeObjCMetadata
2531
class NestedA : NSObject, NSCoding { // expected-error{{nested class 'CodingA.NestedA' has an unstable name when archiving via 'NSCoding'}}
2632
// expected-note@-1{{for compatibility with existing archives, use '@objc' to record the Swift 3 runtime name}}{{3-3=@objc(_TtCC8nscoding7CodingA7NestedA)}}
2733
// expected-note@-2{{for new classes, use '@objc' to specify a unique, prefixed Objective-C runtime name}}{{3-3=@objc(<#prefixed Objective-C class name#>)}}
@@ -36,14 +42,14 @@ extension CodingA {
3642
func encode(coder: NSCoder) { }
3743
}
3844

39-
// CHECK-NOT: class_decl{{.*}}"NestedC"{{.*}}@_staticInitializeObjCMetadata
45+
// NEGATIVE-NOT: class_decl{{.*}}"NestedC"{{.*}}@_staticInitializeObjCMetadata
4046
@objc(CodingA_NestedC)
4147
class NestedC : NSObject, NSCoding {
4248
required init(coder: NSCoder) { }
4349
func encode(coder: NSCoder) { }
4450
}
4551

46-
// CHECK-NOT: class_decl{{.*}}"NestedD"{{.*}}@_staticInitializeObjCMetadata
52+
// NEGATIVE-NOT: class_decl{{.*}}"NestedD"{{.*}}@_staticInitializeObjCMetadata
4753
@objc(CodingA_NestedD)
4854
class NestedD : NSObject {
4955
required init(coder: NSCoder) { }
@@ -58,7 +64,7 @@ extension CodingA.NestedD: NSCoding { // okay
5864
}
5965

6066
// Generic classes
61-
// CHECK-NOT: class_decl{{.*}}"CodingB"{{.*}}@_staticInitializeObjCMetadata
67+
// NEGATIVE-NOT: class_decl{{.*}}"CodingB"{{.*}}@_staticInitializeObjCMetadata
6268
class CodingB<T> : NSObject, NSCoding {
6369
required init(coder: NSCoder) { }
6470
func encode(coder: NSCoder) { }
@@ -72,7 +78,7 @@ extension CodingB {
7278
}
7379

7480
// Fileprivate classes.
75-
// CHECK-NOT: class_decl{{.*}}"CodingC"{{.*}}@_staticInitializeObjCMetadata
81+
// NEGATIVE-NOT: class_decl{{.*}}"CodingC"{{.*}}@_staticInitializeObjCMetadata
7682
fileprivate class CodingC : NSObject, NSCoding { // expected-error{{fileprivate class 'CodingC' has an unstable name when archiving via 'NSCoding'}}
7783
// expected-note@-1{{for compatibility with existing archives, use '@objc' to record the Swift 3 runtime name}}{{1-1=@objc(_TtC8nscodingP33_0B4E7641C0BD1F170280EEDD0D0C1F6C7CodingC)}}
7884
// expected-note@-2{{for new classes, use '@objc' to specify a unique, prefixed Objective-C runtime name}}{{1-1=@objc(<#prefixed Objective-C class name#>)}}
@@ -99,7 +105,7 @@ func someFunction() {
99105
}
100106

101107
// Inherited conformances.
102-
// CHECK-NOT: class_decl{{.*}}"CodingE"{{.*}}@_staticInitializeObjCMetadata
108+
// NEGATIVE-NOT: class_decl{{.*}}"CodingE"{{.*}}@_staticInitializeObjCMetadata
103109
class CodingE<T> : CodingB<T> {
104110
required init(coder: NSCoder) { super.init(coder: coder) }
105111
override func encode(coder: NSCoder) { }
@@ -119,24 +125,26 @@ private class CodingG : NSObject, NSCoding {
119125
}
120126

121127
extension CodingB {
122-
// CHECK-NOT: class_decl{{.*}}"GenericViaScope"{{.*}}@_staticInitializeObjCMetadata
128+
// NEGATIVE-NOT: class_decl{{.*}}"GenericViaScope"{{.*}}@_staticInitializeObjCMetadata
123129
@objc(GenericViaScope) // expected-error {{generic subclasses of '@objc' classes cannot have an explicit '@objc' because they are not directly visible from Objective-C}}
124130
class GenericViaScope : NSObject { }
125131
}
126132

127133
// Inference of @_staticInitializeObjCMetadata.
128-
// CHECK-NOT: class_decl{{.*}}"SubclassOfCodingA"{{.*}}@_staticInitializeObjCMetadata
134+
// NEGATIVE-NOT: class_decl{{.*}}"SubclassOfCodingA"{{.*}}@_staticInitializeObjCMetadata
129135
class SubclassOfCodingA : CodingA { }
130136

131-
// CHECK: class_decl{{.*}}"SubclassOfCodingE"{{.*}}@_staticInitializeObjCMetadata
137+
// CHECK-OLD: class_decl{{.*}}"SubclassOfCodingE"{{.*}}@_staticInitializeObjCMetadata
138+
// NEGATIVE-NEW-NOT: class_decl{{.*}}"SubclassOfCodingE"{{.*}}@_staticInitializeObjCMetadata
132139
class SubclassOfCodingE : CodingE<Int> { }
133140

134141
// Do not warn when simply inheriting from classes that conform to NSCoding.
135142
// The subclass may never be serialized. But do still infer static
136143
// initialization, just in case.
137-
// CHECK-NOT: class_decl{{.*}}"PrivateSubclassOfCodingA"{{.*}}@_staticInitializeObjCMetadata
144+
// NEGATIVE-NOT: class_decl{{.*}}"PrivateSubclassOfCodingA"{{.*}}@_staticInitializeObjCMetadata
138145
private class PrivateSubclassOfCodingA : CodingA { }
139-
// CHECK: class_decl{{.*}}"PrivateSubclassOfCodingE"{{.*}}@_staticInitializeObjCMetadata
146+
// CHECK-OLD: class_decl{{.*}}"PrivateSubclassOfCodingE"{{.*}}@_staticInitializeObjCMetadata
147+
// NEGATIVE-NEW-NOT: class_decl{{.*}}"PrivateSubclassOfCodingE"{{.*}}@_staticInitializeObjCMetadata
140148
private class PrivateSubclassOfCodingE : CodingE<Int> { }
141149

142150
// But do warn when inherited through a protocol.

0 commit comments

Comments
 (0)