Skip to content

Commit 2bf6974

Browse files
committed
[ASTGen] Fix ReferenceOwnershipAttr modifier
Similar to 7dd8944. Modifier argument is not parsed as a keyword.
1 parent 4160f10 commit 2bf6974

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

lib/ASTGen/Sources/ASTGen/DeclAttrs.swift

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2066,17 +2066,18 @@ extension ASTGenVisitor {
20662066
kind = .weak
20672067
guard node.detail == nil else {
20682068
// TODO: Diagnose.
2069-
return nil
2069+
fatalError("invalid argument for 'weak' modifier")
20702070
}
20712071
case .unowned:
2072-
switch node.detail?.detail.keywordKind {
2073-
case .safe, nil:
2072+
switch node.detail?.detail.rawText {
2073+
case "safe", nil:
20742074
kind = .unowned
2075-
case .unsafe:
2075+
case "unsafe":
20762076
kind = .unmanaged
2077-
case _?:
2077+
case let text?:
20782078
// TODO: Diagnose
2079-
kind = .unowned
2079+
_ = text
2080+
fatalError("invalid argument for 'unowned' modifier")
20802081
}
20812082
default:
20822083
preconditionFailure("ReferenceOwnership modifier must be 'weak' or 'unowned'")

test/ASTGen/attrs.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,3 +227,10 @@ func testNonIsolated(actor: MyActor) {
227227
_ = actor.constFlag
228228
_ = actor.mutableFlag
229229
}
230+
231+
struct ReferenceOwnershipModifierTest<X: AnyObject> {
232+
weak var weakValue: X?
233+
unowned var unownedValue: X
234+
unowned(safe) var unownedSafeValue: X
235+
unowned(unsafe) var unmanagedValue: X
236+
}

0 commit comments

Comments
 (0)