Skip to content

Commit 855700d

Browse files
committed
Merge pull request #2689 from rintaro/parser-attr-requires-foundation-inactive
[Parser] Don't report AttrsRequiringFoundation in inactive config block
2 parents fa3140e + 4d686a4 commit 855700d

File tree

6 files changed

+52
-7
lines changed

6 files changed

+52
-7
lines changed

lib/Parse/ParseDecl.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2291,9 +2291,11 @@ ParserStatus Parser::parseDecl(ParseDeclOptions Flags,
22912291
}
22922292

22932293
if (auto SF = CurDeclContext->getParentSourceFile()) {
2294-
for (auto Attr : Attributes) {
2295-
if (isa<ObjCAttr>(Attr) || isa<DynamicAttr>(Attr))
2296-
SF->AttrsRequiringFoundation.insert({Attr->getKind(), Attr});
2294+
if (!getScopeInfo().isInactiveConfigBlock()) {
2295+
for (auto Attr : Attributes) {
2296+
if (isa<ObjCAttr>(Attr) || isa<DynamicAttr>(Attr))
2297+
SF->AttrsRequiringFoundation.insert({Attr->getKind(), Attr});
2298+
}
22972299
}
22982300
}
22992301

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// RUN: %target-build-swift -parse %s -Xfrontend -verify
2+
3+
class TestClass1 {
4+
#if false
5+
@objc func testMethod() {} // OK, in inactive block
6+
#endif
7+
}
8+
9+
#if false
10+
class TestClass2 {
11+
@objc func testMethod() {} // OK, in inactive block
12+
}
13+
#endif
14+
15+
#if false
16+
class TestClass3 {
17+
#if true
18+
@objc func testMethod() {} // OK, in inactive block
19+
#endif
20+
}
21+
#endif
22+
23+
#if false
24+
#if true
25+
class TestClass4 {
26+
@objc func testMethod() {} // OK, in inactive block
27+
}
28+
#endif
29+
#endif
30+
31+
class TestClass5 {
32+
#if true
33+
// pass
34+
#else
35+
@objc func testMethod() {} // OK, in inactive block
36+
#endif
37+
}
38+
39+
#if true
40+
class TestClass6 {
41+
@objc func testMethod() {} // expected-error {{@objc attribute used without importing module 'Foundation'}}
42+
}
43+
#endif

validation-test/stdlib/ArrayNew.swift.gyb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// RUN: %target-clang -fobjc-arc %S/Inputs/SlurpFastEnumeration/SlurpFastEnumeration.m -c -o %t/SlurpFastEnumeration.o; \
77
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-build-swift %S/Inputs/DictionaryKeyValueTypes.swift %S/Inputs/DictionaryKeyValueTypesObjC.swift %t/main.swift -I %S/Inputs/SlurpFastEnumeration/ -Xlinker %t/SlurpFastEnumeration.o -o %t/Array -Xfrontend -disable-access-control; \
88
// RUN: else \
9-
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-build-swift %S/Inputs/DictionaryKeyValueTypes.swift %t/main.swift -o %t/Array -Xfrontend -disable-objc-attr-requires-foundation-module -Xfrontend -disable-access-control; \
9+
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-build-swift %S/Inputs/DictionaryKeyValueTypes.swift %t/main.swift -o %t/Array -Xfrontend -disable-access-control; \
1010
// RUN: fi
1111
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-run %t/Array
1212
// REQUIRES: executable_test

validation-test/stdlib/Dictionary.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// RUN: %target-clang -fobjc-arc %S/Inputs/SlurpFastEnumeration/SlurpFastEnumeration.m -c -o %t/SlurpFastEnumeration.o; \
77
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-build-swift %S/Inputs/DictionaryKeyValueTypes.swift %S/Inputs/DictionaryKeyValueTypesObjC.swift %t/main.swift -I %S/Inputs/SlurpFastEnumeration/ -Xlinker %t/SlurpFastEnumeration.o -o %t/Dictionary -Xfrontend -disable-access-control; \
88
// RUN: else \
9-
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-build-swift %S/Inputs/DictionaryKeyValueTypes.swift %t/main.swift -o %t/Dictionary -Xfrontend -disable-access-control -Xfrontend -disable-objc-attr-requires-foundation-module; \
9+
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-build-swift %S/Inputs/DictionaryKeyValueTypes.swift %t/main.swift -o %t/Dictionary -Xfrontend -disable-access-control; \
1010
// RUN: fi
1111
//
1212
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-run %t/Dictionary

validation-test/stdlib/Set.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// RUN: %target-clang -fobjc-arc %S/Inputs/SlurpFastEnumeration/SlurpFastEnumeration.m -c -o %t/SlurpFastEnumeration.o; \
77
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-build-swift %S/Inputs/DictionaryKeyValueTypes.swift %S/Inputs/DictionaryKeyValueTypesObjC.swift %t/main.swift -I %S/Inputs/SlurpFastEnumeration/ -Xlinker %t/SlurpFastEnumeration.o -o %t/Set -Xfrontend -disable-access-control; \
88
// RUN: else \
9-
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-build-swift %S/Inputs/DictionaryKeyValueTypes.swift %t/main.swift -o %t/Set -Xfrontend -disable-access-control -Xfrontend -disable-objc-attr-requires-foundation-module; \
9+
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-build-swift %S/Inputs/DictionaryKeyValueTypes.swift %t/main.swift -o %t/Set -Xfrontend -disable-access-control; \
1010
// RUN: fi
1111
//
1212
// RUN: %S/../../utils/line-directive %t/main.swift -- %target-run %t/Set

validation-test/stdlib/Unicode.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// RUN: rm -rf %t
22
// RUN: mkdir -p %t
3-
// RUN: %target-build-swift %s -o %t/a.out -Xfrontend -disable-objc-attr-requires-foundation-module
3+
// RUN: %target-build-swift %s -o %t/a.out
44
// RUN: %target-run %t/a.out
55
// REQUIRES: executable_test
66

0 commit comments

Comments
 (0)