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

Commit a4861a6

Browse files
authored
Merge pull request #64 from juanjux/fix/issue_62
Move aliases from imports to its own node. Add SimpleIdentifier
2 parents d2fdd07 + 06b6e06 commit a4861a6

19 files changed

+628
-114
lines changed

ANNOTATION.md

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -51,31 +51,25 @@
5151
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Dict'\]/\*\[@internalRole\]\[@internalRole='values'\] | MapValue |
5252
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Tuple'\] | TupleLiteral, Expression |
5353
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef'\] | FunctionDeclaration, FunctionDeclarationName, SimpleIdentifier |
54-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef'\]/\*\[@InternalType='FunctionDef\.decorator\_list'\] | Call, SimpleIdentifier, Incomplete |
55-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef'\]/\*\[@InternalType='FunctionDef\.body'\] | FunctionDeclarationBody |
56-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef'\]/\*\[@InternalType='arguments'\] | FunctionDeclarationArgument, Incomplete |
57-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='args'\] | FunctionDeclarationArgument, FunctionDeclarationArgumentName |
58-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='vararg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName |
59-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='kwarg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName, Incomplete |
60-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.defaults'\] | FunctionDeclarationArgumentDefaultValue, Incomplete |
61-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.keywords'\] | FunctionDeclarationArgumentDefaultValue, Incomplete |
6254
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='AsyncFunctionDef'\] | FunctionDeclaration, FunctionDeclarationName, SimpleIdentifier, Incomplete |
63-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='AsyncFunctionDef'\]/\*\[@InternalType='AsyncFunctionDef\.decorator\_list'\] | Call, SimpleIdentifier, Incomplete |
64-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='AsyncFunctionDef'\]/\*\[@InternalType='AsyncFunctionDef\.body'\] | FunctionDeclarationBody |
65-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='AsyncFunctionDef'\]/\*\[@InternalType='arguments'\] | FunctionDeclarationArgument, Incomplete |
66-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='AsyncFunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='args'\] | FunctionDeclarationArgument, FunctionDeclarationArgumentName |
67-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='AsyncFunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='vararg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName |
68-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='AsyncFunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='kwarg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName, Incomplete |
69-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='AsyncFunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.defaults'\] | FunctionDeclarationArgumentDefaultValue, Incomplete |
70-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='AsyncFunctionDef'\]/\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.keywords'\] | FunctionDeclarationArgumentDefaultValue, Incomplete |
55+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef\.decorator\_list'\] | Call, SimpleIdentifier, Incomplete |
56+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='FunctionDef\.body'\] | FunctionDeclarationBody |
57+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='arguments'\] | FunctionDeclarationArgument, Incomplete |
58+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='args'\] | FunctionDeclarationArgument, FunctionDeclarationArgumentName, SimpleIdentifier |
59+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='vararg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName, SimpleIdentifier |
60+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='kwarg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName, Incomplete, SimpleIdentifier |
61+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.defaults'\] | FunctionDeclarationArgumentDefaultValue, Incomplete |
62+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.keywords'\] | FunctionDeclarationArgumentDefaultValue, Incomplete |
63+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='arguments'\]/\*\[@InternalType='AsyncFunctionDef\.decorator\_list'\] | Call, SimpleIdentifier, Incomplete |
64+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='arguments'\]/\*\[@InternalType='AsyncFunctionDef\.body'\] | FunctionDeclarationBody |
7165
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\] | FunctionDeclaration, SimpleIdentifier, Expression, Incomplete |
7266
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='Lambda\.body'\] | FunctionDeclarationBody |
7367
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\] | FunctionDeclarationArgument, Incomplete |
74-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='args'\] | FunctionDeclarationArgument, FunctionDeclarationArgumentName |
75-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='vararg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName |
76-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='kwarg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName, Incomplete |
77-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.defaults'\] | FunctionDeclarationArgumentDefaultValue, Incomplete |
78-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.keywords'\] | FunctionDeclarationArgumentDefaultValue, Incomplete |
68+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='args'\] | FunctionDeclarationArgument, FunctionDeclarationArgumentName, SimpleIdentifier |
69+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='vararg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName, SimpleIdentifier |
70+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@internalRole\]\[@internalRole='kwarg'\] | FunctionDeclarationArgument, FunctionDeclarationVarArgsList, FunctionDeclarationArgumentName, Incomplete, SimpleIdentifier |
71+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.defaults'\] | FunctionDeclarationArgumentDefaultValue, SimpleIdentifier, Incomplete |
72+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Lambda'\]/\*\[@InternalType='arguments'\]/\*\[@InternalType='arguments\.keywords'\] | FunctionDeclarationArgumentDefaultValue, SimpleIdentifier, Incomplete |
7973
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Attribute'\] | SimpleIdentifier, Expression |
8074
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Attribute'\]/\*\[@InternalType='Name'\] | QualifiedIdentifier |
8175
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Call'\] | Call, Expression |
@@ -129,8 +123,10 @@
129123
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='IfExp'\]/\*\[@internalRole\]\[@internalRole='test'\] | IfCondition |
130124
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='IfExp'\]/\*\[@internalRole\]\[@internalRole='orelse'\] | IfElse |
131125
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='Import'\] | ImportDeclaration, Statement |
126+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='alias'\] | ImportPath, SimpleIdentifier |
127+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='ImportFrom\.module'\] | ImportPath, SimpleIdentifier |
128+
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='alias\.asname'\] | ImportAlias, SimpleIdentifier |
132129
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='ImportFrom'\] | ImportDeclaration, Statement |
133-
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='alias'\] | ImportAlias, SimpleIdentifier |
134130
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='ClassDef'\] | TypeDeclaration, SimpleIdentifier, Statement |
135131
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='ClassDef'\]/\*\[@InternalType='ClassDef\.body'\] | TypeDeclarationBody |
136132
| /self::\*\[@InternalType='Module'\]//\*\[@InternalType='ClassDef'\]/\*\[@InternalType='ClassDef\.bases'\] | TypeDeclarationBases |

driver/normalizer/annotation.go

Lines changed: 39 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -109,71 +109,56 @@ var AnnotationRules = On(Any).Self(
109109
// Type node Token (2 levels up) but the SDK doesn't allow this
110110
// TODO: create an issue for the SDK
111111
On(HasInternalType(pyast.FunctionDef)).Roles(FunctionDeclaration, FunctionDeclarationName,
112-
SimpleIdentifier).Children(
113-
On(HasInternalType("FunctionDef.decorator_list")).Roles(Call, SimpleIdentifier, Incomplete),
114-
On(HasInternalType("FunctionDef.body")).Roles(FunctionDeclarationBody),
115-
// FIXME: change to FunctionDeclarationArgumentS once the PR has been merged
116-
On(HasInternalType(pyast.Arguments)).Roles(FunctionDeclarationArgument, Incomplete).Children(
117-
On(HasInternalRole("args")).Roles(FunctionDeclarationArgument, FunctionDeclarationArgumentName),
118-
On(HasInternalRole("vararg")).Roles(FunctionDeclarationArgument, FunctionDeclarationVarArgsList,
119-
FunctionDeclarationArgumentName),
120-
// FIXME: this is really different from vararg, change it when we have FunctionDeclarationMap
121-
// or something similar in the UAST
122-
On(HasInternalRole("kwarg")).Roles(FunctionDeclarationArgument, FunctionDeclarationVarArgsList,
123-
FunctionDeclarationArgumentName, Incomplete),
124-
// Default arguments: Python's AST puts default arguments on a sibling list to the one of
125-
// arguments that must be mapped to the arguments right-aligned like:
126-
// a, b=2, c=3 ->
127-
// args [a,b,c],
128-
// defaults [2,3]
129-
// TODO: create an issue for the SDK
130-
On(HasInternalType("arguments.defaults")).Roles(FunctionDeclarationArgumentDefaultValue, Incomplete),
131-
On(HasInternalType("arguments.keywords")).Roles(FunctionDeclarationArgumentDefaultValue, Incomplete),
132-
),
133-
),
134-
On(HasInternalType(pyast.AsyncFunctionDef)).Roles(FunctionDeclaration, FunctionDeclarationName, SimpleIdentifier,
135-
Incomplete).Children(
112+
SimpleIdentifier),
113+
On(HasInternalType(pyast.AsyncFunctionDef)).Roles(FunctionDeclaration,
114+
FunctionDeclarationName, SimpleIdentifier, Incomplete),
115+
On(HasInternalType("FunctionDef.decorator_list")).Roles(Call, SimpleIdentifier, Incomplete),
116+
On(HasInternalType("FunctionDef.body")).Roles(FunctionDeclarationBody),
117+
// FIXME: change to FunctionDeclarationArgumentS once the PR has been merged
118+
On(HasInternalType(pyast.Arguments)).Roles(FunctionDeclarationArgument, Incomplete).Children(
119+
On(HasInternalRole("args")).Roles(FunctionDeclarationArgument, FunctionDeclarationArgumentName,
120+
SimpleIdentifier),
121+
On(HasInternalRole("vararg")).Roles(FunctionDeclarationArgument, FunctionDeclarationVarArgsList,
122+
FunctionDeclarationArgumentName, SimpleIdentifier),
123+
// FIXME: this is really different from vararg, change it when we have FunctionDeclarationMap
124+
// or something similar in the UAST
125+
On(HasInternalRole("kwarg")).Roles(FunctionDeclarationArgument, FunctionDeclarationVarArgsList,
126+
FunctionDeclarationArgumentName, Incomplete, SimpleIdentifier),
127+
// Default arguments: Python's AST puts default arguments on a sibling list to the one of
128+
// arguments that must be mapped to the arguments right-aligned like:
129+
// a, b=2, c=3 ->
130+
// args [a,b,c],
131+
// defaults [2,3]
132+
// TODO: create an issue for the SDK
133+
On(HasInternalType("arguments.defaults")).Roles(FunctionDeclarationArgumentDefaultValue, Incomplete),
134+
On(HasInternalType("arguments.keywords")).Roles(FunctionDeclarationArgumentDefaultValue, Incomplete),
136135
On(HasInternalType("AsyncFunctionDef.decorator_list")).Roles(Call, SimpleIdentifier, Incomplete),
137136
On(HasInternalType("AsyncFunctionDef.body")).Roles(FunctionDeclarationBody),
138137
// FIXME: change to FunctionDeclarationArgumentS once the PR has been merged
139-
On(HasInternalType(pyast.Arguments)).Roles(FunctionDeclarationArgument, Incomplete).Children(
140-
On(HasInternalRole("args")).Roles(FunctionDeclarationArgument, FunctionDeclarationArgumentName),
141-
On(HasInternalRole("vararg")).Roles(FunctionDeclarationArgument, FunctionDeclarationVarArgsList,
142-
FunctionDeclarationArgumentName),
143-
// FIXME: this is really different from vararg, change it when we have FunctionDeclarationMap
144-
// or something similar in the UAST
145-
On(HasInternalRole("kwarg")).Roles(FunctionDeclarationArgument, FunctionDeclarationVarArgsList,
146-
FunctionDeclarationArgumentName, Incomplete),
147-
// Default arguments: Python's AST puts default arguments on a sibling list to the one of
148-
// arguments that must be mapped to the arguments right-aligned like:
149-
// a, b=2, c=3 ->
150-
// args [a,b,c],
151-
// defaults [2,3]
152-
// TODO: create an issue for the SDK
153-
On(HasInternalType("arguments.defaults")).Roles(FunctionDeclarationArgumentDefaultValue, Incomplete),
154-
On(HasInternalType("arguments.keywords")).Roles(FunctionDeclarationArgumentDefaultValue, Incomplete),
155-
),
156138
),
157139
On(HasInternalType(pyast.Lambda)).Roles(FunctionDeclaration, SimpleIdentifier, Expression,
158-
Incomplete).Children(
140+
Incomplete).Children(
159141
On(HasInternalType("Lambda.body")).Roles(FunctionDeclarationBody),
160142
// FIXME: change to FunctionDeclarationArgumentS once the PR has been merged
161143
On(HasInternalType(pyast.Arguments)).Roles(FunctionDeclarationArgument, Incomplete).Children(
162-
On(HasInternalRole("args")).Roles(FunctionDeclarationArgument, FunctionDeclarationArgumentName),
144+
On(HasInternalRole("args")).Roles(FunctionDeclarationArgument, FunctionDeclarationArgumentName,
145+
SimpleIdentifier),
163146
On(HasInternalRole("vararg")).Roles(FunctionDeclarationArgument, FunctionDeclarationVarArgsList,
164-
FunctionDeclarationArgumentName),
147+
FunctionDeclarationArgumentName, SimpleIdentifier),
165148
// FIXME: this is really different from vararg, change it when we have FunctionDeclarationMap
166149
// or something similar in the UAST
167150
On(HasInternalRole("kwarg")).Roles(FunctionDeclarationArgument, FunctionDeclarationVarArgsList,
168-
FunctionDeclarationArgumentName, Incomplete),
151+
FunctionDeclarationArgumentName, Incomplete, SimpleIdentifier),
169152
// Default arguments: Python's AST puts default arguments on a sibling list to the one of
170153
// arguments that must be mapped to the arguments right-aligned like:
171154
// a, b=2, c=3 ->
172155
// args [a,b,c],
173156
// defaults [2,3]
174157
// TODO: create an issue for the SDK
175-
On(HasInternalType("arguments.defaults")).Roles(FunctionDeclarationArgumentDefaultValue, Incomplete),
176-
On(HasInternalType("arguments.keywords")).Roles(FunctionDeclarationArgumentDefaultValue, Incomplete),
158+
On(HasInternalType("arguments.defaults")).Roles(FunctionDeclarationArgumentDefaultValue,
159+
SimpleIdentifier, Incomplete),
160+
On(HasInternalType("arguments.keywords")).Roles(FunctionDeclarationArgumentDefaultValue,
161+
SimpleIdentifier, Incomplete),
177162
),
178163
),
179164

@@ -189,7 +174,7 @@ var AnnotationRules = On(Any).Self(
189174
On(HasInternalType(pyast.Name)).Roles(Call),
190175
On(HasInternalType(pyast.Attribute)).Roles(CallCallee).Children(
191176
On(HasInternalRole("value")).Roles(CallReceiver),
192-
)),
177+
)),
193178
),
194179

195180
//
@@ -208,7 +193,6 @@ var AnnotationRules = On(Any).Self(
208193
On(HasInternalRole("value")).Roles(AugmentedAssignmentValue),
209194
),
210195

211-
212196
On(HasInternalType(pyast.Expression)).Roles(Expression),
213197
On(HasInternalType(pyast.Expr)).Roles(Expression),
214198
On(HasInternalType(pyast.Name)).Roles(SimpleIdentifier, Expression),
@@ -270,8 +254,13 @@ var AnnotationRules = On(Any).Self(
270254
On(HasInternalRole("orelse")).Roles(IfElse),
271255
),
272256
On(HasInternalType(pyast.Import)).Roles(ImportDeclaration, Statement),
257+
// "y" in "from x import y" or "import y"
258+
On(HasInternalType(pyast.Alias)).Roles(ImportPath, SimpleIdentifier),
259+
// "x" in "from x import y"
260+
On(HasInternalType("ImportFrom.module")).Roles(ImportPath, SimpleIdentifier),
261+
// "y" in "import x as y"
262+
On(HasInternalType("alias.asname")).Roles(ImportAlias, SimpleIdentifier),
273263
On(HasInternalType(pyast.ImportFrom)).Roles(ImportDeclaration, Statement),
274-
On(HasInternalType(pyast.Alias)).Roles(ImportAlias, SimpleIdentifier),
275264
On(HasInternalType(pyast.ClassDef)).Roles(TypeDeclaration, SimpleIdentifier, Statement).Children(
276265
On(HasInternalType("ClassDef.body")).Roles(TypeDeclarationBody),
277266
On(HasInternalType("ClassDef.bases")).Roles(TypeDeclarationBases),
@@ -360,6 +349,5 @@ var AnnotationRules = On(Any).Self(
360349
On(HasInternalType(pyast.Index)).Roles(Expression, Incomplete),
361350
On(HasInternalType(pyast.Slice)).Roles(Expression, Incomplete),
362351
On(HasInternalType(pyast.ExtSlice)).Roles(Expression, Incomplete),
363-
364352
),
365353
)

driver/normalizer/parser.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ var ToNoder = &native.ObjectToNoder{
7676
"ListComp.generators": {"ifs": true},
7777
"ListComp.generators.ifs": {"comparators": true, "ops": true},
7878
},
79+
PromotedPropertyStrings: map[string]map[string]bool{
80+
"alias": {"asname": true},
81+
"ImportFrom": {"module": true},
82+
},
7983
// FIXME: test[ast_type=Compare].comparators is a list?? (should be "right")
8084
}
8185

tests/annotations.py.uast

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ Module {
179179
. . . . . }
180180
. . . . . Children: {
181181
. . . . . . 0: arg {
182-
. . . . . . . Roles: FunctionDeclarationArgument,FunctionDeclarationArgumentName
182+
. . . . . . . Roles: FunctionDeclarationArgument,FunctionDeclarationArgumentName,SimpleIdentifier
183183
. . . . . . . TOKEN "a"
184184
. . . . . . . StartPosition: {
185185
. . . . . . . . Offset: 33
@@ -216,7 +216,7 @@ Module {
216216
. . . . . . . }
217217
. . . . . . }
218218
. . . . . . 1: arg {
219-
. . . . . . . Roles: FunctionDeclarationArgument,FunctionDeclarationArgumentName
219+
. . . . . . . Roles: FunctionDeclarationArgument,FunctionDeclarationArgumentName,SimpleIdentifier
220220
. . . . . . . TOKEN "b"
221221
. . . . . . . StartPosition: {
222222
. . . . . . . . Offset: 41

0 commit comments

Comments
 (0)