Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7929d8a

Browse files
committed
C#: Fix generic type name location in AST
1 parent 037907e commit 7929d8a

3 files changed

Lines changed: 41 additions & 37 deletions

File tree

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,12 @@ protected override void Populate(TextWriter trapFile)
8080
tts.Elements.Zip(tt.TupleElements, (s, t) => Create(cx, s.Type, this, t.Type)).Enumerate();
8181
return;
8282
case SyntaxKind.GenericName:
83-
var gns = (GenericNameSyntax)syntax;
84-
Emit(trapFile, loc ?? gns.Identifier.GetLocation(), parent, type);
85-
cx.PopulateLater(() => gns.TypeArgumentList.Arguments.Zip(type.TypeMentions, (s, t) => Create(cx, s, this, t)).Enumerate());
83+
Emit(trapFile, loc ?? syntax.GetLocation(), parent, type);
84+
cx.PopulateLater(() =>
85+
((GenericNameSyntax)syntax)
86+
.TypeArgumentList
87+
.Arguments
88+
.Zip(type.TypeMentions, (s, t) => Create(cx, s, this, t)).Enumerate());
8689
return;
8790
case SyntaxKind.QualifiedName:
8891
var qns = (QualifiedNameSyntax)syntax;

csharp/ql/test/library-tests/definitions/definitions.expected

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@
5353
| definitions.cs:114:28:114:28 | T | definitions.cs:114:17:114:17 | T | T |
5454
| definitions.cs:114:32:114:32 | A | definitions.cs:97:11:97:11 | A | T |
5555
| definitions.cs:117:27:117:27 | T | definitions.cs:117:18:117:18 | T | T |
56-
| definitions.cs:119:20:119:21 | I2<Object> | definitions.cs:117:15:117:19 | I2<> | T |
56+
| definitions.cs:119:20:119:29 | I2<Object> | definitions.cs:117:15:117:19 | I2<> | T |
5757
| definitions.cs:121:18:121:18 | A | definitions.cs:97:11:97:11 | A | T |
5858
| definitions.cs:121:21:121:22 | I1 | definitions.cs:112:15:112:16 | I1 | T |
59-
| definitions.cs:121:25:121:26 | I2<A> | definitions.cs:117:15:117:19 | I2<> | T |
59+
| definitions.cs:121:25:121:29 | I2<A> | definitions.cs:117:15:117:19 | I2<> | T |
6060
| definitions.cs:121:28:121:28 | A | definitions.cs:97:11:97:11 | A | T |
6161
| definitions.cs:121:37:121:37 | T | definitions.cs:121:13:121:13 | T | T |
6262
| definitions.cs:121:41:121:41 | A | definitions.cs:97:11:97:11 | A | T |
@@ -66,12 +66,12 @@
6666
| definitions.cs:130:24:130:25 | I3 | definitions.cs:119:15:119:16 | I3 | T |
6767
| definitions.cs:130:33:130:34 | T2 | definitions.cs:130:18:130:19 | T2 | T |
6868
| definitions.cs:132:10:132:11 | I1 | definitions.cs:112:15:112:16 | I1 | T |
69-
| definitions.cs:132:14:132:14 | B<A> | definitions.cs:121:11:121:14 | B<> | T |
69+
| definitions.cs:132:14:132:17 | B<A> | definitions.cs:121:11:121:14 | B<> | T |
7070
| definitions.cs:132:16:132:16 | A | definitions.cs:97:11:97:11 | A | T |
71-
| definitions.cs:134:9:134:9 | B<A> | definitions.cs:121:11:121:14 | B<> | T |
71+
| definitions.cs:134:9:134:12 | B<A> | definitions.cs:121:11:121:14 | B<> | T |
7272
| definitions.cs:134:11:134:11 | A | definitions.cs:97:11:97:11 | A | T |
7373
| definitions.cs:134:19:134:19 | A | definitions.cs:97:11:97:11 | A | T |
74-
| definitions.cs:134:47:134:47 | B<A> | definitions.cs:121:11:121:14 | B<> | T |
74+
| definitions.cs:134:47:134:50 | B<A> | definitions.cs:121:11:121:14 | B<> | T |
7575
| definitions.cs:134:49:134:49 | A | definitions.cs:97:11:97:11 | A | T |
7676
| definitions.cs:140:9:140:9 | E | definitions.cs:139:14:139:14 | E | T |
7777
| definitions.cs:140:52:140:52 | E | definitions.cs:139:14:139:14 | E | T |
@@ -94,20 +94,20 @@
9494
| definitions.cs:156:22:156:33 | EventHandler | definitions.cs:99:30:99:41 | EventHandler | T |
9595
| definitions.cs:156:55:156:56 | S1 | definitions.cs:78:12:78:13 | S1 | T |
9696
| definitions.cs:156:62:156:63 | S1 | definitions.cs:78:12:78:13 | S1 | M |
97-
| definitions.cs:160:27:160:32 | Nested<> | definitions.cs:158:22:158:30 | Nested<> | T |
97+
| definitions.cs:160:27:160:35 | Nested<> | definitions.cs:158:22:158:30 | Nested<> | T |
9898
| definitions.cs:160:34:160:34 | T | definitions.cs:158:29:158:29 | T | T |
99-
| definitions.cs:160:59:160:64 | Nested<> | definitions.cs:158:22:158:30 | Nested<> | M |
99+
| definitions.cs:160:59:160:67 | Nested<> | definitions.cs:158:22:158:30 | Nested<> | M |
100100
| definitions.cs:160:66:160:66 | T | definitions.cs:158:29:158:29 | T | T |
101-
| definitions.cs:166:9:166:13 | C4 | definitions.cs:151:11:151:12 | C4 | T |
102-
| definitions.cs:166:15:166:20 | Nested<I4> | definitions.cs:158:22:158:30 | Nested<> | T |
101+
| definitions.cs:166:12:166:13 | C4 | definitions.cs:151:11:151:12 | C4 | T |
102+
| definitions.cs:166:15:166:24 | Nested<I4> | definitions.cs:158:22:158:30 | Nested<> | T |
103103
| definitions.cs:166:22:166:23 | I4 | definitions.cs:143:15:143:16 | I4 | T |
104104
| definitions.cs:166:30:166:31 | C4 | definitions.cs:151:11:151:12 | C4 | T |
105-
| definitions.cs:166:33:166:38 | Nested<I4> | definitions.cs:158:22:158:30 | Nested<> | T |
105+
| definitions.cs:166:33:166:42 | Nested<I4> | definitions.cs:158:22:158:30 | Nested<> | T |
106106
| definitions.cs:166:40:166:41 | I4 | definitions.cs:143:15:143:16 | I4 | T |
107107
| definitions.cs:166:44:166:49 | call to method Create | definitions.cs:160:37:160:42 | Create | M |
108108
| definitions.cs:167:9:167:10 | C1 | definitions.cs:18:11:18:12 | C1 | T |
109-
| definitions.cs:171:13:171:17 | C1 | definitions.cs:18:11:18:12 | C1 | T |
110-
| definitions.cs:171:27:171:31 | C1 | definitions.cs:18:11:18:12 | C1 | M |
109+
| definitions.cs:171:16:171:17 | C1 | definitions.cs:18:11:18:12 | C1 | T |
110+
| definitions.cs:171:30:171:31 | C1 | definitions.cs:18:11:18:12 | C1 | M |
111111
| definitions.cs:172:13:172:13 | access to local variable c | definitions.cs:171:19:171:19 | c | V |
112112
| definitions.cs:172:15:172:23 | access to property property1 | definitions.cs:24:20:24:28 | property1 | M |
113113
| definitions.cs:172:27:172:27 | access to local variable c | definitions.cs:171:19:171:19 | c | V |
@@ -119,8 +119,8 @@
119119
| definitions.cs:174:16:174:17 | access to field c1 | definitions.cs:167:12:167:13 | c1 | V |
120120
| definitions.cs:174:19:174:27 | access to property property1 | definitions.cs:24:20:24:28 | property1 | M |
121121
| definitions.cs:175:24:175:25 | access to local variable c5 | definitions.cs:173:17:173:18 | c5 | V |
122-
| definitions.cs:175:30:175:34 | C4 | definitions.cs:151:11:151:12 | C4 | T |
123-
| definitions.cs:175:36:175:41 | Nested<I4> | definitions.cs:158:22:158:30 | Nested<> | T |
122+
| definitions.cs:175:33:175:34 | C4 | definitions.cs:151:11:151:12 | C4 | T |
123+
| definitions.cs:175:36:175:45 | Nested<I4> | definitions.cs:158:22:158:30 | Nested<> | T |
124124
| definitions.cs:175:43:175:44 | I4 | definitions.cs:143:15:143:16 | I4 | T |
125125
| definitions.cs:181:41:181:42 | C5 | definitions.cs:164:11:164:12 | C5 | T |
126126
| definitions.cs:181:45:181:46 | MyAttribute | definitions.cs:194:11:194:21 | MyAttribute | T |

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

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
| Program.cs:10:23:10:26 | Void |
2-
| Program.cs:10:35:10:38 | Func<String,IDisposable> |
2+
| Program.cs:10:35:10:59 | Func<String,IDisposable> |
33
| Program.cs:10:40:10:45 | String |
44
| Program.cs:10:48:10:58 | IDisposable |
55
| Program.cs:11:23:11:26 | Void |
6-
| Program.cs:11:35:11:38 | Func<String,Task<Action>> |
6+
| Program.cs:11:35:11:60 | Func<String,Task<Action>> |
77
| Program.cs:11:40:11:45 | String |
8-
| Program.cs:11:48:11:51 | Task<Action> |
8+
| Program.cs:11:48:11:59 | Task<Action> |
99
| Program.cs:11:53:11:58 | Action |
1010
| Program.cs:12:23:12:26 | Void |
11-
| Program.cs:12:35:12:38 | Func<String,Task<IDisposable>> |
11+
| Program.cs:12:35:12:65 | Func<String,Task<IDisposable>> |
1212
| Program.cs:12:40:12:45 | String |
13-
| Program.cs:12:48:12:51 | Task<IDisposable> |
13+
| Program.cs:12:48:12:64 | Task<IDisposable> |
1414
| Program.cs:12:53:12:63 | IDisposable |
1515
| Program.cs:14:16:14:19 | Void |
1616
| Program.cs:14:26:14:31 | String |
1717
| Program.cs:14:26:14:33 | String[] |
1818
| Program.cs:16:28:16:38 | IDisposable |
1919
| Program.cs:32:9:32:12 | Void |
20-
| Program.cs:32:23:32:31 | Container<T> |
20+
| Program.cs:32:23:32:34 | Container<T> |
2121
| Program.cs:32:33:32:33 | T |
2222
| Program.cs:32:36:32:42 | Builder |
23-
| Program.cs:45:5:45:14 | (Int32,TypeMentions) |
23+
| Program.cs:45:5:45:33 | (Int32,TypeMentions) |
2424
| Program.cs:45:16:45:18 | Int32 |
2525
| Program.cs:45:21:45:32 | TypeMentions |
26-
| Program.cs:50:15:50:15 | I<Int32> |
26+
| Program.cs:50:15:50:20 | I<Int32> |
2727
| Program.cs:50:17:50:19 | Int32 |
28-
| Program.cs:50:23:50:23 | I<String,String> |
28+
| Program.cs:50:23:50:39 | I<String,String> |
2929
| Program.cs:50:25:50:30 | String |
3030
| Program.cs:50:33:50:38 | String |
31-
| Program.cs:50:42:50:42 | I<String> |
31+
| Program.cs:50:42:50:50 | I<String> |
3232
| Program.cs:50:44:50:49 | String |
3333
| Program.cs:57:5:57:7 | Int32 |
3434
| Program.cs:58:5:58:7 | Int32 |
@@ -55,11 +55,11 @@
5555
| Program.cs:125:5:125:8 | Void |
5656
| Program.cs:127:9:127:15 | dynamic |
5757
| Program.cs:127:22:127:28 | dynamic |
58-
| Program.cs:133:5:133:8 | Func<Int32,Int32> |
58+
| Program.cs:133:5:133:18 | Func<Int32,Int32> |
5959
| Program.cs:133:10:133:12 | Int32 |
6060
| Program.cs:133:15:133:17 | Int32 |
6161
| Program.cs:133:31:133:33 | Int32 |
62-
| Program.cs:135:20:135:23 | Func<Object,String,Object> |
62+
| Program.cs:135:20:135:47 | Func<Object,String,Object> |
6363
| Program.cs:135:25:135:30 | Object |
6464
| Program.cs:135:33:135:38 | String |
6565
| Program.cs:135:41:135:46 | Object |
@@ -69,19 +69,20 @@
6969
| Program.cs:146:27:146:27 | T |
7070
| Program.cs:146:31:146:41 | DynamicType |
7171
| Program.cs:156:15:156:35 | TEmbeddedTypesManager |
72-
| Program.cs:156:39:156:58 | EmbeddedTypesManager<,> |
72+
| Program.cs:156:39:156:96 | EmbeddedTypesManager<,> |
7373
| Program.cs:156:60:156:80 | TEmbeddedTypesManager |
7474
| Program.cs:156:83:156:95 | TEmbeddedType |
7575
| Program.cs:157:15:157:27 | TEmbeddedType |
76-
| Program.cs:157:31:157:50 | EmbeddedTypesManager<,> |
76+
| Program.cs:157:31:157:88 | EmbeddedTypesManager<,> |
7777
| Program.cs:157:52:157:72 | TEmbeddedTypesManager |
7878
| Program.cs:157:75:157:87 | TEmbeddedType |
7979
| Program.cs:164:5:164:7 | Int32 |
80-
| Program.cs:164:5:164:8 | Int32* |
8180
| Program.cs:164:5:164:12 | Int32*[][] |
8281
| Program.cs:169:5:169:10 | String |
8382
| Program.cs:174:5:174:8 | Void |
8483
| Program.cs:176:18:176:20 | IDisposable |
84+
| Program.cs:176:31:176:41 | IDisposable |
85+
| Program.cs:176:31:176:43 | IDisposable[] |
8586
| Program.cs:185:5:185:17 | (Int32,Object) |
8687
| Program.cs:185:6:185:8 | Int32 |
8788
| Program.cs:185:11:185:16 | Object |
@@ -91,11 +92,11 @@
9192
| Program.cs:187:9:187:25 | Nullable<(Object,Object)> |
9293
| Program.cs:187:10:187:15 | Object |
9394
| Program.cs:187:18:187:23 | Object |
94-
| Program.cs:194:15:194:16 | C2<C4<T>> |
95-
| Program.cs:194:18:194:19 | C4<T> |
95+
| Program.cs:194:15:194:23 | C2<C4<T>> |
96+
| Program.cs:194:18:194:22 | C4<T> |
9697
| Program.cs:194:21:194:21 | T |
97-
| Program.cs:196:15:196:16 | C2<C3<T>> |
98-
| Program.cs:196:18:196:19 | C3<T> |
98+
| Program.cs:196:15:196:23 | C2<C3<T>> |
99+
| Program.cs:196:18:196:22 | C3<T> |
99100
| Program.cs:196:21:196:21 | T |
100-
| Program.cs:198:12:198:13 | C4<C5> |
101+
| Program.cs:198:12:198:17 | C4<C5> |
101102
| Program.cs:198:15:198:16 | C5 |

0 commit comments

Comments
 (0)