Skip to content

Commit 173fbc8

Browse files
committed
C#: Fix extractor to avoid the recursive eval of TypeArgumentList and update test results.
1 parent 58fdcd8 commit 173fbc8

File tree

2 files changed

+226
-1
lines changed

2 files changed

+226
-1
lines changed

csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void Populate()
5353
case SyntaxKind.GenericName:
5454
var gns = (GenericNameSyntax)Syntax;
5555
Emit(Loc ?? gns.Identifier.GetLocation(), Parent, Type);
56-
gns.TypeArgumentList.Arguments.Zip(Type.TypeMentions, (s, t) => Create(cx, s, this, t)).Enumerate();
56+
cx.PopulateLater(() => gns.TypeArgumentList.Arguments.Zip(Type.TypeMentions, (s, t) => Create(cx, s, this, t)).Enumerate());
5757
return;
5858
case SyntaxKind.QualifiedName:
5959
if (Type.ContainingType == null)

csharp/ql/test/library-tests/regressions/TypeMentions.expected

Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,228 @@
6868
| Program.cs:142:30:142:40 | DynamicType |
6969
| Program.cs:146:27:146:27 | T |
7070
| Program.cs:146:30:146:40 | DynamicType |
71+
| Program.cs:192:35:192:60 | CommonEmbeddedTypesManager |
72+
| Program.cs:193:15:193:30 | TPEModuleBuilder |
73+
| Program.cs:193:34:193:54 | CommonPEModuleBuilder |
74+
| Program.cs:194:15:194:37 | TModuleCompilationState |
75+
| Program.cs:194:41:194:68 | CommonModuleCompilationState |
76+
| Program.cs:195:15:195:35 | TEmbeddedTypesManager |
77+
| Program.cs:195:39:195:58 | EmbeddedTypesManager<,,,,,,,,,,,,,,,,,,,,> |
78+
| Program.cs:195:60:195:75 | TPEModuleBuilder |
79+
| Program.cs:195:78:195:100 | TModuleCompilationState |
80+
| Program.cs:195:103:195:123 | TEmbeddedTypesManager |
81+
| Program.cs:195:126:195:136 | TSyntaxNode |
82+
| Program.cs:195:139:195:152 | TAttributeData |
83+
| Program.cs:195:155:195:161 | TSymbol |
84+
| Program.cs:195:164:195:178 | TAssemblySymbol |
85+
| Program.cs:195:181:195:196 | TNamedTypeSymbol |
86+
| Program.cs:195:199:195:210 | TFieldSymbol |
87+
| Program.cs:195:213:195:225 | TMethodSymbol |
88+
| Program.cs:195:228:195:239 | TEventSymbol |
89+
| Program.cs:195:242:195:256 | TPropertySymbol |
90+
| Program.cs:195:259:195:274 | TParameterSymbol |
91+
| Program.cs:195:277:195:296 | TTypeParameterSymbol |
92+
| Program.cs:195:299:195:311 | TEmbeddedType |
93+
| Program.cs:195:314:195:327 | TEmbeddedField |
94+
| Program.cs:195:330:195:344 | TEmbeddedMethod |
95+
| Program.cs:195:347:195:360 | TEmbeddedEvent |
96+
| Program.cs:195:363:195:379 | TEmbeddedProperty |
97+
| Program.cs:195:382:195:399 | TEmbeddedParameter |
98+
| Program.cs:195:402:195:423 | TEmbeddedTypeParameter |
99+
| Program.cs:196:15:196:25 | TSyntaxNode |
100+
| Program.cs:196:29:196:38 | SyntaxNode |
101+
| Program.cs:197:15:197:28 | TAttributeData |
102+
| Program.cs:197:32:197:44 | AttributeData |
103+
| Program.cs:197:47:197:66 | ICustomAttribute |
104+
| Program.cs:198:15:198:29 | TAssemblySymbol |
105+
| Program.cs:198:40:198:46 | TSymbol |
106+
| Program.cs:199:15:199:30 | TNamedTypeSymbol |
107+
| Program.cs:199:41:199:47 | TSymbol |
108+
| Program.cs:199:50:199:76 | INamespaceTypeReference |
109+
| Program.cs:200:15:200:26 | TFieldSymbol |
110+
| Program.cs:200:37:200:43 | TSymbol |
111+
| Program.cs:200:46:200:64 | IFieldReference |
112+
| Program.cs:201:15:201:27 | TMethodSymbol |
113+
| Program.cs:201:38:201:44 | TSymbol |
114+
| Program.cs:201:47:201:66 | IMethodReference |
115+
| Program.cs:202:15:202:26 | TEventSymbol |
116+
| Program.cs:202:37:202:43 | TSymbol |
117+
| Program.cs:202:46:202:69 | ITypeMemberReference |
118+
| Program.cs:203:15:203:29 | TPropertySymbol |
119+
| Program.cs:203:40:203:46 | TSymbol |
120+
| Program.cs:203:49:203:72 | ITypeMemberReference |
121+
| Program.cs:204:15:204:30 | TParameterSymbol |
122+
| Program.cs:204:41:204:47 | TSymbol |
123+
| Program.cs:204:50:204:72 | IParameterListEntry |
124+
| Program.cs:204:75:204:90 | INamedEntity |
125+
| Program.cs:205:15:205:34 | TTypeParameterSymbol |
126+
| Program.cs:205:45:205:51 | TSymbol |
127+
| Program.cs:205:54:205:89 | IGenericMethodParameterReference |
128+
| Program.cs:206:15:206:27 | TEmbeddedType |
129+
| Program.cs:206:31:206:50 | EmbeddedTypesManager<,,,,,,,,,,,,,,,,,,,,> |
130+
| Program.cs:206:52:206:67 | TPEModuleBuilder |
131+
| Program.cs:206:70:206:92 | TModuleCompilationState |
132+
| Program.cs:206:95:206:115 | TEmbeddedTypesManager |
133+
| Program.cs:206:118:206:128 | TSyntaxNode |
134+
| Program.cs:206:131:206:144 | TAttributeData |
135+
| Program.cs:206:147:206:153 | TSymbol |
136+
| Program.cs:206:156:206:170 | TAssemblySymbol |
137+
| Program.cs:206:173:206:188 | TNamedTypeSymbol |
138+
| Program.cs:206:191:206:202 | TFieldSymbol |
139+
| Program.cs:206:205:206:217 | TMethodSymbol |
140+
| Program.cs:206:220:206:231 | TEventSymbol |
141+
| Program.cs:206:234:206:248 | TPropertySymbol |
142+
| Program.cs:206:251:206:266 | TParameterSymbol |
143+
| Program.cs:206:269:206:288 | TTypeParameterSymbol |
144+
| Program.cs:206:291:206:303 | TEmbeddedType |
145+
| Program.cs:206:306:206:319 | TEmbeddedField |
146+
| Program.cs:206:322:206:336 | TEmbeddedMethod |
147+
| Program.cs:206:339:206:352 | TEmbeddedEvent |
148+
| Program.cs:206:355:206:371 | TEmbeddedProperty |
149+
| Program.cs:206:374:206:391 | TEmbeddedParameter |
150+
| Program.cs:206:394:206:415 | TEmbeddedTypeParameter |
151+
| Program.cs:206:418:206:435 | CommonEmbeddedType |
152+
| Program.cs:207:15:207:28 | TEmbeddedField |
153+
| Program.cs:207:32:207:51 | EmbeddedTypesManager<,,,,,,,,,,,,,,,,,,,,> |
154+
| Program.cs:207:53:207:68 | TPEModuleBuilder |
155+
| Program.cs:207:71:207:93 | TModuleCompilationState |
156+
| Program.cs:207:96:207:116 | TEmbeddedTypesManager |
157+
| Program.cs:207:119:207:129 | TSyntaxNode |
158+
| Program.cs:207:132:207:145 | TAttributeData |
159+
| Program.cs:207:148:207:154 | TSymbol |
160+
| Program.cs:207:157:207:171 | TAssemblySymbol |
161+
| Program.cs:207:174:207:189 | TNamedTypeSymbol |
162+
| Program.cs:207:192:207:203 | TFieldSymbol |
163+
| Program.cs:207:206:207:218 | TMethodSymbol |
164+
| Program.cs:207:221:207:232 | TEventSymbol |
165+
| Program.cs:207:235:207:249 | TPropertySymbol |
166+
| Program.cs:207:252:207:267 | TParameterSymbol |
167+
| Program.cs:207:270:207:289 | TTypeParameterSymbol |
168+
| Program.cs:207:292:207:304 | TEmbeddedType |
169+
| Program.cs:207:307:207:320 | TEmbeddedField |
170+
| Program.cs:207:323:207:337 | TEmbeddedMethod |
171+
| Program.cs:207:340:207:353 | TEmbeddedEvent |
172+
| Program.cs:207:356:207:372 | TEmbeddedProperty |
173+
| Program.cs:207:375:207:392 | TEmbeddedParameter |
174+
| Program.cs:207:395:207:416 | TEmbeddedTypeParameter |
175+
| Program.cs:207:419:207:437 | CommonEmbeddedField |
176+
| Program.cs:208:15:208:29 | TEmbeddedMethod |
177+
| Program.cs:208:33:208:52 | EmbeddedTypesManager<,,,,,,,,,,,,,,,,,,,,> |
178+
| Program.cs:208:54:208:69 | TPEModuleBuilder |
179+
| Program.cs:208:72:208:94 | TModuleCompilationState |
180+
| Program.cs:208:97:208:117 | TEmbeddedTypesManager |
181+
| Program.cs:208:120:208:130 | TSyntaxNode |
182+
| Program.cs:208:133:208:146 | TAttributeData |
183+
| Program.cs:208:149:208:155 | TSymbol |
184+
| Program.cs:208:158:208:172 | TAssemblySymbol |
185+
| Program.cs:208:175:208:190 | TNamedTypeSymbol |
186+
| Program.cs:208:193:208:204 | TFieldSymbol |
187+
| Program.cs:208:207:208:219 | TMethodSymbol |
188+
| Program.cs:208:222:208:233 | TEventSymbol |
189+
| Program.cs:208:236:208:250 | TPropertySymbol |
190+
| Program.cs:208:253:208:268 | TParameterSymbol |
191+
| Program.cs:208:271:208:290 | TTypeParameterSymbol |
192+
| Program.cs:208:293:208:305 | TEmbeddedType |
193+
| Program.cs:208:308:208:321 | TEmbeddedField |
194+
| Program.cs:208:324:208:338 | TEmbeddedMethod |
195+
| Program.cs:208:341:208:354 | TEmbeddedEvent |
196+
| Program.cs:208:357:208:373 | TEmbeddedProperty |
197+
| Program.cs:208:376:208:393 | TEmbeddedParameter |
198+
| Program.cs:208:396:208:417 | TEmbeddedTypeParameter |
199+
| Program.cs:208:420:208:439 | CommonEmbeddedMethod |
200+
| Program.cs:209:15:209:28 | TEmbeddedEvent |
201+
| Program.cs:209:32:209:51 | EmbeddedTypesManager<,,,,,,,,,,,,,,,,,,,,> |
202+
| Program.cs:209:53:209:68 | TPEModuleBuilder |
203+
| Program.cs:209:71:209:93 | TModuleCompilationState |
204+
| Program.cs:209:96:209:116 | TEmbeddedTypesManager |
205+
| Program.cs:209:119:209:129 | TSyntaxNode |
206+
| Program.cs:209:132:209:145 | TAttributeData |
207+
| Program.cs:209:148:209:154 | TSymbol |
208+
| Program.cs:209:157:209:171 | TAssemblySymbol |
209+
| Program.cs:209:174:209:189 | TNamedTypeSymbol |
210+
| Program.cs:209:192:209:203 | TFieldSymbol |
211+
| Program.cs:209:206:209:218 | TMethodSymbol |
212+
| Program.cs:209:221:209:232 | TEventSymbol |
213+
| Program.cs:209:235:209:249 | TPropertySymbol |
214+
| Program.cs:209:252:209:267 | TParameterSymbol |
215+
| Program.cs:209:270:209:289 | TTypeParameterSymbol |
216+
| Program.cs:209:292:209:304 | TEmbeddedType |
217+
| Program.cs:209:307:209:320 | TEmbeddedField |
218+
| Program.cs:209:323:209:337 | TEmbeddedMethod |
219+
| Program.cs:209:340:209:353 | TEmbeddedEvent |
220+
| Program.cs:209:356:209:372 | TEmbeddedProperty |
221+
| Program.cs:209:375:209:392 | TEmbeddedParameter |
222+
| Program.cs:209:395:209:416 | TEmbeddedTypeParameter |
223+
| Program.cs:209:419:209:437 | CommonEmbeddedEvent |
224+
| Program.cs:210:15:210:31 | TEmbeddedProperty |
225+
| Program.cs:210:35:210:54 | EmbeddedTypesManager<,,,,,,,,,,,,,,,,,,,,> |
226+
| Program.cs:210:56:210:71 | TPEModuleBuilder |
227+
| Program.cs:210:74:210:96 | TModuleCompilationState |
228+
| Program.cs:210:99:210:119 | TEmbeddedTypesManager |
229+
| Program.cs:210:122:210:132 | TSyntaxNode |
230+
| Program.cs:210:135:210:148 | TAttributeData |
231+
| Program.cs:210:151:210:157 | TSymbol |
232+
| Program.cs:210:160:210:174 | TAssemblySymbol |
233+
| Program.cs:210:177:210:192 | TNamedTypeSymbol |
234+
| Program.cs:210:195:210:206 | TFieldSymbol |
235+
| Program.cs:210:209:210:221 | TMethodSymbol |
236+
| Program.cs:210:224:210:235 | TEventSymbol |
237+
| Program.cs:210:238:210:252 | TPropertySymbol |
238+
| Program.cs:210:255:210:270 | TParameterSymbol |
239+
| Program.cs:210:273:210:292 | TTypeParameterSymbol |
240+
| Program.cs:210:295:210:307 | TEmbeddedType |
241+
| Program.cs:210:310:210:323 | TEmbeddedField |
242+
| Program.cs:210:326:210:340 | TEmbeddedMethod |
243+
| Program.cs:210:343:210:356 | TEmbeddedEvent |
244+
| Program.cs:210:359:210:375 | TEmbeddedProperty |
245+
| Program.cs:210:378:210:395 | TEmbeddedParameter |
246+
| Program.cs:210:398:210:419 | TEmbeddedTypeParameter |
247+
| Program.cs:210:422:210:443 | CommonEmbeddedProperty |
248+
| Program.cs:211:15:211:32 | TEmbeddedParameter |
249+
| Program.cs:211:36:211:55 | EmbeddedTypesManager<,,,,,,,,,,,,,,,,,,,,> |
250+
| Program.cs:211:57:211:72 | TPEModuleBuilder |
251+
| Program.cs:211:75:211:97 | TModuleCompilationState |
252+
| Program.cs:211:100:211:120 | TEmbeddedTypesManager |
253+
| Program.cs:211:123:211:133 | TSyntaxNode |
254+
| Program.cs:211:136:211:149 | TAttributeData |
255+
| Program.cs:211:152:211:158 | TSymbol |
256+
| Program.cs:211:161:211:175 | TAssemblySymbol |
257+
| Program.cs:211:178:211:193 | TNamedTypeSymbol |
258+
| Program.cs:211:196:211:207 | TFieldSymbol |
259+
| Program.cs:211:210:211:222 | TMethodSymbol |
260+
| Program.cs:211:225:211:236 | TEventSymbol |
261+
| Program.cs:211:239:211:253 | TPropertySymbol |
262+
| Program.cs:211:256:211:271 | TParameterSymbol |
263+
| Program.cs:211:274:211:293 | TTypeParameterSymbol |
264+
| Program.cs:211:296:211:308 | TEmbeddedType |
265+
| Program.cs:211:311:211:324 | TEmbeddedField |
266+
| Program.cs:211:327:211:341 | TEmbeddedMethod |
267+
| Program.cs:211:344:211:357 | TEmbeddedEvent |
268+
| Program.cs:211:360:211:376 | TEmbeddedProperty |
269+
| Program.cs:211:379:211:396 | TEmbeddedParameter |
270+
| Program.cs:211:399:211:420 | TEmbeddedTypeParameter |
271+
| Program.cs:211:423:211:445 | CommonEmbeddedParameter |
272+
| Program.cs:212:15:212:36 | TEmbeddedTypeParameter |
273+
| Program.cs:212:40:212:59 | EmbeddedTypesManager<,,,,,,,,,,,,,,,,,,,,> |
274+
| Program.cs:212:61:212:76 | TPEModuleBuilder |
275+
| Program.cs:212:79:212:101 | TModuleCompilationState |
276+
| Program.cs:212:104:212:124 | TEmbeddedTypesManager |
277+
| Program.cs:212:127:212:137 | TSyntaxNode |
278+
| Program.cs:212:140:212:153 | TAttributeData |
279+
| Program.cs:212:156:212:162 | TSymbol |
280+
| Program.cs:212:165:212:179 | TAssemblySymbol |
281+
| Program.cs:212:182:212:197 | TNamedTypeSymbol |
282+
| Program.cs:212:200:212:211 | TFieldSymbol |
283+
| Program.cs:212:214:212:226 | TMethodSymbol |
284+
| Program.cs:212:229:212:240 | TEventSymbol |
285+
| Program.cs:212:243:212:257 | TPropertySymbol |
286+
| Program.cs:212:260:212:275 | TParameterSymbol |
287+
| Program.cs:212:278:212:297 | TTypeParameterSymbol |
288+
| Program.cs:212:300:212:312 | TEmbeddedType |
289+
| Program.cs:212:315:212:328 | TEmbeddedField |
290+
| Program.cs:212:331:212:345 | TEmbeddedMethod |
291+
| Program.cs:212:348:212:361 | TEmbeddedEvent |
292+
| Program.cs:212:364:212:380 | TEmbeddedProperty |
293+
| Program.cs:212:383:212:400 | TEmbeddedParameter |
294+
| Program.cs:212:403:212:424 | TEmbeddedTypeParameter |
295+
| Program.cs:212:427:212:453 | CommonEmbeddedTypeParameter |

0 commit comments

Comments
 (0)