Skip to content

Commit 4f22d13

Browse files
committed
Specify node names for diagnostics in gyb_syntax_support
1 parent c0f3642 commit 4f22d13

20 files changed

+864
-51
lines changed

Sources/SwiftParser/Diagnostics/ParserDiagnosticMessages.swift

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,14 @@ import SwiftSyntax
1616
let diagnosticDomain: String = "SwiftParser"
1717

1818
extension Syntax {
19-
// FIXME: These should be defined in gyb_syntax_support.
2019
var nodeTypeNameForDiagnostics: String? {
21-
if self.is(DeclSyntax.self) {
22-
return "declaration"
23-
} else if self.is(ExprSyntax.self) {
24-
return "expression"
25-
} else if self.is(PatternSyntax.self) {
26-
return "pattern"
27-
} else if self.is(StmtSyntax.self) {
28-
return "statement"
29-
} else if self.is(TypeSyntax.self) {
30-
return "type"
31-
} else if self.is(FunctionParameterSyntax.self) {
32-
return "function parameter"
33-
} else if self.is(ParameterClauseSyntax.self) {
34-
return "parameter clause"
35-
} else {
36-
return nil
20+
if let name = self.as(SyntaxEnum.self).nameForDiagnostics {
21+
return name
22+
}
23+
if let parent = self.parent {
24+
return parent.nodeTypeNameForDiagnostics
3725
}
26+
return nil
3827
}
3928
}
4029

Sources/SwiftSyntax/SyntaxEnum.swift.gyb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,23 @@ public enum SyntaxEnum {
3030
case ${node.swift_syntax_kind}(${node.name})
3131
% end
3232
% end
33+
34+
public var nameForDiagnostics: String? {
35+
switch self {
36+
case .unknown:
37+
return nil
38+
case .token:
39+
return "token"
40+
% for node in NON_BASE_SYNTAX_NODES:
41+
case .${node.swift_syntax_kind}:
42+
% if node.name_for_diagnostics:
43+
return "${node.name_for_diagnostics}"
44+
% else:
45+
return nil
46+
% end
47+
% end
48+
}
49+
}
3350
}
3451

3552
public extension Syntax {

0 commit comments

Comments
 (0)