Skip to content

Commit ae622f9

Browse files
committed
Add @_objcImplementation attribute
Part of swiftlang/swift#60630, but safe to merge before the compiler-side implementation.
1 parent 3c11671 commit ae622f9

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

Sources/SwiftParser/gyb_generated/DeclarationAttribute.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ extension Parser {
6363
case _objcRuntimeName = "_objcRuntimeName"
6464
case _staticInitializeObjCMetadata = "_staticInitializeObjCMetadata"
6565
case _restatedObjCConformance = "_restatedObjCConformance"
66+
case _objcImplementation = "_objcImplementation"
6667
case _optimize = "_optimize"
6768
case _clangImporterSynthesizedType = "_clangImporterSynthesizedType"
6869
case _weakLinked = "_weakLinked"

Tests/SwiftParserTest/Attributes.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,4 +238,15 @@ final class AttributeTests: XCTestCase {
238238
"""
239239
)
240240
}
241+
242+
func testObjcImplementationAttribute() throws {
243+
AssertParse("""
244+
@_objcImplementation extension MyClass {
245+
func fn() {}
246+
}
247+
@_objcImplementation(Category) extension MyClass {
248+
func fn2() {}
249+
}
250+
""")
251+
}
241252
}

gyb_syntax_support/AttributeKinds.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,11 @@ def __init__(self, name, swift_name=None):
393393
ABIStableToAdd, ABIStableToRemove, APIStableToAdd, APIStableToRemove,
394394
code=70),
395395
# NOTE: 71 is unused
396-
# NOTE: 72 is unused
396+
DeclAttribute('_objcImplementation', 'ObjCImplementation',
397+
OnExtension,
398+
UserInaccessible,
399+
ABIBreakingToAdd, ABIBreakingToRemove, APIBreakingToAdd, APIBreakingToRemove,
400+
code=72),
397401
DeclAttribute('_optimize', 'Optimize',
398402
OnAbstractFunction, OnSubscript, OnVar,
399403
UserInaccessible,

0 commit comments

Comments
 (0)