Skip to content

Commit 6e25fd9

Browse files
authored
Stop hiding '@Frozen' from code completion (#26942)
And print it explicitly on imported NS_CLOSED_ENUMs.
1 parent d0d89fa commit 6e25fd9

File tree

4 files changed

+6
-9
lines changed

4 files changed

+6
-9
lines changed

include/swift/AST/Attr.def

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,7 @@ SIMPLE_DECL_ATTR(_weakLinked, WeakLinked,
362362
OnSubscript | OnConstructor | OnEnumElement | OnExtension | UserInaccessible,
363363
75)
364364
SIMPLE_DECL_ATTR(frozen, Frozen,
365-
OnEnum | OnStruct |
366-
UserInaccessible,
365+
OnEnum | OnStruct,
367366
76)
368367
DECL_ATTR_ALIAS(_frozen, Frozen)
369368
SIMPLE_DECL_ATTR(_forbidSerializingReference, ForbidSerializingReference,

lib/ClangImporter/ImportDecl.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2873,12 +2873,8 @@ namespace {
28732873
enumDecl->computeType();
28742874

28752875
// Annotate as 'frozen' if appropriate.
2876-
assert((DeclAttribute::getOptions(DAK_Frozen) &
2877-
DeclAttribute::UserInaccessible) &&
2878-
"Once 'frozen' is supported, the attribute should not be "
2879-
"implicit (below)");
28802876
if (enumKind == EnumKind::FrozenEnum)
2881-
enumDecl->getAttrs().add(new (C) FrozenAttr(/*implicit*/true));
2877+
enumDecl->getAttrs().add(new (C) FrozenAttr(/*implicit*/false));
28822878

28832879
// Set up the C underlying type as its Swift raw type.
28842880
enumDecl->setRawType(underlyingType);

test/ClangImporter/enum-exhaustivity.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
// CHECK-NEXT: case B
88
// CHECK-NEXT: {{^}$}}
99

10-
// Note that we don't print '@frozen' here yet.
11-
// CHECK-LABEL: {{^}}enum ExhaustiveEnum : {{.+}} {
10+
// CHECK-LABEL: {{^}}@frozen enum ExhaustiveEnum : {{.+}} {
1211
// CHECK: case A
1312
// CHECK-NEXT: case B
1413
// CHECK-NEXT: {{^}$}}

test/IDE/complete_decl_attribute.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ struct MyStruct {}
9494
// KEYWORD4-NEXT: Keyword/None: dynamicCallable[#Enum Attribute#]; name=dynamicCallable
9595
// KEYWORD4-NEXT: Keyword/None: dynamicMemberLookup[#Enum Attribute#]; name=dynamicMemberLookup
9696
// KEYWORD4-NEXT: Keyword/None: usableFromInline[#Enum Attribute#]; name=usableFromInline
97+
// KEYWORD4-NEXT: Keyword/None: frozen[#Enum Attribute#]; name=frozen
9798
// KEYWORD4-NEXT: Keyword/None: propertyWrapper[#Enum Attribute#]; name=propertyWrapper
9899
// KEYWORD4-NEXT: Keyword/None: _functionBuilder[#Enum Attribute#]; name=_functionBuilder
99100
// KEYWORD4-NEXT: End completions
@@ -105,6 +106,7 @@ struct MyStruct {}
105106
// KEYWORD5-NEXT: Keyword/None: dynamicCallable[#Struct Attribute#]; name=dynamicCallable
106107
// KEYWORD5-NEXT: Keyword/None: dynamicMemberLookup[#Struct Attribute#]; name=dynamicMemberLookup
107108
// KEYWORD5-NEXT: Keyword/None: usableFromInline[#Struct Attribute#]; name=usableFromInline
109+
// KEYWORD5-NEXT: Keyword/None: frozen[#Struct Attribute#]; name=frozen
108110
// KEYWORD5-NEXT: Keyword/None: propertyWrapper[#Struct Attribute#]; name=propertyWrapper
109111
// KEYWORD5-NEXT: Keyword/None: _functionBuilder[#Struct Attribute#]; name=_functionBuilder
110112
// KEYWORD5-NEXT: End completions
@@ -263,6 +265,7 @@ func dummy2() {}
263265
// KEYWORD_LAST-NEXT: Keyword/None: usableFromInline[#Declaration Attribute#]; name=usableFromInline{{$}}
264266
// KEYWORD_LAST-NEXT: Keyword/None: discardableResult[#Declaration Attribute#]; name=discardableResult
265267
// KEYWORD_LAST-NEXT: Keyword/None: GKInspectable[#Declaration Attribute#]; name=GKInspectable{{$}}
268+
// KEYWORD_LAST-NEXT: Keyword/None: frozen[#Declaration Attribute#]; name=frozen
266269
// KEYWORD_LAST-NEXT: Keyword/None: propertyWrapper[#Declaration Attribute#]; name=propertyWrapper
267270
// KEYWORD_LAST-NEXT: Keyword/None: _functionBuilder[#Declaration Attribute#]; name=_functionBuilder{{$}}
268271
// KEYWORD_LAST-NEXT: Keyword/None: IBSegueAction[#Declaration Attribute#]; name=IBSegueAction{{$}}

0 commit comments

Comments
 (0)