Skip to content
This repository was archived by the owner on Mar 8, 2020. It is now read-only.

Commit 27f90f3

Browse files
author
Juanjo Alvarez
committed
Fix mapping of empty CPPASTName nodes
Signed-off-by: Juanjo Alvarez <[email protected]>
1 parent 2028d35 commit 27f90f3

29 files changed

+167
-184
lines changed

driver/normalizer/annotation.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,18 @@ var Annotations = []Mapping{
131131
AnnotateType("internal-type", nil, role.Incomplete),
132132
AnnotateType("CPPASTTranslationUnit", nil, role.File, role.Module),
133133
AnnotateType("CPPASTExpressionStatement", nil, role.Expression),
134-
AnnotateType("CPPASTName", FieldRoles{"Name": {Rename: uast.KeyToken}},
135-
role.Identifier),
134+
135+
// Empty names i.e. for empty function arguments like: "void main(int, char**)"
136+
Map(Obj{
137+
"IASTClass": String("CPPASTName"),
138+
"Name": String(""),
139+
}, Obj{
140+
uast.KeyType: String("CPPASTName"),
141+
uast.KeyRoles: Roles(role.Identifier),
142+
uast.KeyToken: String(""),
143+
}),
144+
145+
AnnotateType("CPPASTName", FieldRoles{"Name": {Rename: uast.KeyToken}}, role.Identifier),
136146
AnnotateType("CPPASTImplicitName", FieldRoles{"Name": {Rename: uast.KeyToken}},
137147
role.Identifier),
138148

driver/normalizer/normalizer.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ var Normalizers = []Mapping{
7070
CommentNode(false, "comm", nil),
7171
)),
7272

73+
// Args in C can have type but be empty (typically in headers, but also in implementations): int main(int, char**)
74+
Map(Obj{
75+
"IASTClass": String("CPPASTName"),
76+
"Name": String(""),
77+
}, Obj{
78+
uast.KeyType: String("uast:Identifier"),
79+
"Name": String(""),
80+
}),
81+
7382
MapSemantic("CPPASTName", uast.Identifier{}, MapObj(
7483
Obj{
7584
"Name": Var("name"),

fixtures/anonymous_class_declaration.cpp.sem.uast

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@
4444
},
4545
IsFinal: false,
4646
Key: "class",
47-
'Prop_Name': {
48-
IASTClass: "CPPASTName",
47+
'Prop_Name': { '@type': "uast:Identifier",
4948
Name: "",
5049
},
5150
StorageClass: "unspecified",

fixtures/anonymous_class_declaration.cpp.uast

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@
4444
},
4545
IsFinal: false,
4646
Key: "class",
47-
'Prop_Name': {
48-
IASTClass: "CPPASTName",
49-
Name: "",
47+
'Prop_Name': { '@type': "CPPASTName",
48+
'@token': "",
49+
'@role': [Identifier],
5050
},
5151
StorageClass: "unspecified",
5252
},

fixtures/cast.cpp.sem.uast

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -682,8 +682,7 @@
682682
},
683683
},
684684
DeclaresParameterPack: false,
685-
'Prop_Name': {
686-
IASTClass: "CPPASTName",
685+
'Prop_Name': { '@type': "uast:Identifier",
687686
Name: "",
688687
},
689688
'Prop_TypeNode': ~,

fixtures/cast.cpp.uast

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -688,9 +688,9 @@
688688
},
689689
},
690690
DeclaresParameterPack: false,
691-
'Prop_Name': {
692-
IASTClass: "CPPASTName",
693-
Name: "",
691+
'Prop_Name': { '@type': "CPPASTName",
692+
'@token': "",
693+
'@role': [Identifier],
694694
},
695695
'Prop_TypeNode': ~,
696696
},

fixtures/const_cast.cpp.sem.uast

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -661,8 +661,7 @@
661661
},
662662
},
663663
DeclaresParameterPack: false,
664-
'Prop_Name': {
665-
IASTClass: "CPPASTName",
664+
'Prop_Name': { '@type': "uast:Identifier",
666665
Name: "",
667666
},
668667
'Prop_PointerOperators': [],
@@ -855,8 +854,7 @@
855854
},
856855
},
857856
DeclaresParameterPack: false,
858-
'Prop_Name': {
859-
IASTClass: "CPPASTName",
857+
'Prop_Name': { '@type': "uast:Identifier",
860858
Name: "",
861859
},
862860
'Prop_PointerOperators': [],

fixtures/const_cast.cpp.uast

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -667,9 +667,9 @@
667667
},
668668
},
669669
DeclaresParameterPack: false,
670-
'Prop_Name': {
671-
IASTClass: "CPPASTName",
672-
Name: "",
670+
'Prop_Name': { '@type': "CPPASTName",
671+
'@token': "",
672+
'@role': [Identifier],
673673
},
674674
'Prop_PointerOperators': [],
675675
'Prop_TypeNode': ~,
@@ -862,9 +862,9 @@
862862
},
863863
},
864864
DeclaresParameterPack: false,
865-
'Prop_Name': {
866-
IASTClass: "CPPASTName",
867-
Name: "",
865+
'Prop_Name': { '@type': "CPPASTName",
866+
'@token': "",
867+
'@role': [Identifier],
868868
},
869869
'Prop_PointerOperators': [],
870870
'Prop_TypeNode': ~,

fixtures/dynamic_cast.cpp.sem.uast

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,7 @@
501501
},
502502
},
503503
DeclaresParameterPack: false,
504-
'Prop_Name': {
505-
IASTClass: "CPPASTName",
504+
'Prop_Name': { '@type': "uast:Identifier",
506505
Name: "",
507506
},
508507
'Prop_TypeNode': ~,
@@ -607,8 +606,7 @@
607606
},
608607
},
609608
DeclaresParameterPack: false,
610-
'Prop_Name': {
611-
IASTClass: "CPPASTName",
609+
'Prop_Name': { '@type': "uast:Identifier",
612610
Name: "",
613611
},
614612
'Prop_TypeNode': ~,
@@ -825,8 +823,7 @@
825823
},
826824
},
827825
DeclaresParameterPack: false,
828-
'Prop_Name': {
829-
IASTClass: "CPPASTName",
826+
'Prop_Name': { '@type': "uast:Identifier",
830827
Name: "",
831828
},
832829
'Prop_TypeNode': ~,
@@ -931,8 +928,7 @@
931928
},
932929
},
933930
DeclaresParameterPack: false,
934-
'Prop_Name': {
935-
IASTClass: "CPPASTName",
931+
'Prop_Name': { '@type': "uast:Identifier",
936932
Name: "",
937933
},
938934
'Prop_TypeNode': ~,
@@ -1235,8 +1231,7 @@
12351231
},
12361232
},
12371233
DeclaresParameterPack: false,
1238-
'Prop_Name': {
1239-
IASTClass: "CPPASTName",
1234+
'Prop_Name': { '@type': "uast:Identifier",
12401235
Name: "",
12411236
},
12421237
'Prop_PointerOperators': [],
@@ -1423,8 +1418,7 @@
14231418
},
14241419
},
14251420
DeclaresParameterPack: false,
1426-
'Prop_Name': {
1427-
IASTClass: "CPPASTName",
1421+
'Prop_Name': { '@type': "uast:Identifier",
14281422
Name: "",
14291423
},
14301424
'Prop_PointerOperators': [],

fixtures/dynamic_cast.cpp.uast

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -538,9 +538,9 @@
538538
},
539539
},
540540
DeclaresParameterPack: false,
541-
'Prop_Name': {
542-
IASTClass: "CPPASTName",
543-
Name: "",
541+
'Prop_Name': { '@type': "CPPASTName",
542+
'@token': "",
543+
'@role': [Identifier],
544544
},
545545
'Prop_TypeNode': ~,
546546
},
@@ -648,9 +648,9 @@
648648
},
649649
},
650650
DeclaresParameterPack: false,
651-
'Prop_Name': {
652-
IASTClass: "CPPASTName",
653-
Name: "",
651+
'Prop_Name': { '@type': "CPPASTName",
652+
'@token': "",
653+
'@role': [Identifier],
654654
},
655655
'Prop_TypeNode': ~,
656656
},
@@ -872,9 +872,9 @@
872872
},
873873
},
874874
DeclaresParameterPack: false,
875-
'Prop_Name': {
876-
IASTClass: "CPPASTName",
877-
Name: "",
875+
'Prop_Name': { '@type': "CPPASTName",
876+
'@token': "",
877+
'@role': [Identifier],
878878
},
879879
'Prop_TypeNode': ~,
880880
},
@@ -982,9 +982,9 @@
982982
},
983983
},
984984
DeclaresParameterPack: false,
985-
'Prop_Name': {
986-
IASTClass: "CPPASTName",
987-
Name: "",
985+
'Prop_Name': { '@type': "CPPASTName",
986+
'@token': "",
987+
'@role': [Identifier],
988988
},
989989
'Prop_TypeNode': ~,
990990
},
@@ -1292,9 +1292,9 @@
12921292
},
12931293
},
12941294
DeclaresParameterPack: false,
1295-
'Prop_Name': {
1296-
IASTClass: "CPPASTName",
1297-
Name: "",
1295+
'Prop_Name': { '@type': "CPPASTName",
1296+
'@token': "",
1297+
'@role': [Identifier],
12981298
},
12991299
'Prop_PointerOperators': [],
13001300
'Prop_TypeNode': ~,
@@ -1483,9 +1483,9 @@
14831483
},
14841484
},
14851485
DeclaresParameterPack: false,
1486-
'Prop_Name': {
1487-
IASTClass: "CPPASTName",
1488-
Name: "",
1486+
'Prop_Name': { '@type': "CPPASTName",
1487+
'@token': "",
1488+
'@role': [Identifier],
14891489
},
14901490
'Prop_PointerOperators': [],
14911491
'Prop_TypeNode': ~,

0 commit comments

Comments
 (0)