Skip to content

Commit 2ceb8f1

Browse files
authored
Merge pull request #79492 from rintaro/astgen-attr-as-modifier
[ASTGen] Add an assertion for attribute as an modifier
2 parents 1a5228b + 81475be commit 2ceb8f1

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,9 @@ struct BridgedDeclAttributes {
777777
BRIDGED_INLINE swift::DeclAttributes unbridged() const;
778778
};
779779

780+
SWIFT_NAME("BridgedDeclAttribute.isDeclModifier(_:)")
781+
bool BridgedDeclAttribute_isDeclModifier(BridgedDeclAttrKind cKind);
782+
780783
SWIFT_NAME("BridgedDeclAttributes.add(self:_:)")
781784
void BridgedDeclAttributes_add(BridgedDeclAttributes *_Nonnull attrs,
782785
BridgedDeclAttribute add);

lib/AST/Bridging/DeclAttributeBridging.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ BridgedDeclAttribute BridgedDeclAttribute_createSimple(
6666
cAtLoc.unbridged(), cAttrLoc.unbridged());
6767
}
6868

69+
bool BridgedDeclAttribute_isDeclModifier(BridgedDeclAttrKind cKind) {
70+
auto optKind = unbridged(cKind);
71+
if (!optKind)
72+
return false;
73+
return DeclAttribute::isDeclModifier(*optKind);
74+
}
75+
6976
void BridgedDeclAttributes_add(BridgedDeclAttributes *cAttrs,
7077
BridgedDeclAttribute cAdd) {
7178
auto attrs = cAttrs->unbridged();

lib/ASTGen/Sources/ASTGen/DeclAttrs.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1973,9 +1973,12 @@ extension ASTGenVisitor {
19731973
// Other modifiers are all "simple" attributes.
19741974
let kind = BridgedDeclAttrKind(from: node.name.rawText.bridged)
19751975
guard kind != .none else {
1976-
// TODO: Diagnose?
1977-
assertionFailure("unknown decl modifier")
1978-
return nil
1976+
// TODO: Diagnose.
1977+
fatalError("(compiler bug) unknown decl modifier")
1978+
}
1979+
if !BridgedDeclAttribute.isDeclModifier(kind) {
1980+
// TODO: Diagnose.
1981+
fatalError("(compiler bug) decl attribute was parsed as a modifier")
19791982
}
19801983
return self.generateSimpleDeclAttr(declModifier: node, kind: kind)
19811984
}

0 commit comments

Comments
 (0)