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

Skip to content

Commit 1d70bfd

Browse files
committed
Extract non-named tuple types
1 parent 7e1eee5 commit 1d70bfd

10 files changed

Lines changed: 74 additions & 159 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ private Field(Context cx, IFieldSymbol init)
1717
type = new Lazy<Type>(() => Entities.Type.Create(cx, Symbol.Type));
1818
}
1919

20-
public static Field Create(Context cx, IFieldSymbol field) => FieldFactory.Instance.CreateEntityFromSymbol(cx, field);
20+
public static Field Create(Context cx, IFieldSymbol field) => FieldFactory.Instance.CreateEntityFromSymbol(cx, field.CorrespondingTupleField ?? field);
2121

2222
// Do not populate backing fields.
2323
// Populate Tuple fields.

csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TupleType.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace Semmle.Extraction.CSharp.Entities
1313
/// </summary>
1414
internal class TupleType : Type<INamedTypeSymbol>
1515
{
16-
public static TupleType Create(Context cx, INamedTypeSymbol type) => TupleTypeFactory.Instance.CreateEntityFromSymbol(cx, type);
16+
public static TupleType Create(Context cx, INamedTypeSymbol type) => TupleTypeFactory.Instance.CreateEntityFromSymbol(cx, type.TupleUnderlyingType ?? type);
1717

1818
private class TupleTypeFactory : CachedEntityFactory<INamedTypeSymbol, TupleType>
1919
{
@@ -41,7 +41,7 @@ public override void Populate(TextWriter trapFile)
4141
PopulateType(trapFile);
4242
PopulateGenerics();
4343

44-
var underlyingType = NamedType.CreateNamedTypeFromTupleType(Context, Symbol.TupleUnderlyingType ?? Symbol);
44+
var underlyingType = NamedType.CreateNamedTypeFromTupleType(Context, Symbol);
4545

4646
trapFile.tuple_underlying_type(this, underlyingType);
4747

csharp/extractor/Semmle.Extraction.CSharp/SymbolExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ private static void BuildNamedTypeId(this INamedTypeSymbol named, Context cx, Te
295295
trapFile.BuildList(",", named.TupleElements,
296296
(f, tb0) =>
297297
{
298-
trapFile.Write(f.Name);
298+
trapFile.Write((f.CorrespondingTupleField ?? f).Name);
299299
trapFile.Write(":");
300300
f.Type.BuildOrWriteId(cx, tb0, symbolBeingDefined, addBaseClass);
301301
}

csharp/ql/test/library-tests/assignables/Assignables.expected

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -39,39 +39,12 @@
3939
| Assignables.cs:78:22:78:22 | s |
4040
| Assignables.cs:82:21:82:24 | temp |
4141
| Assignables.cs:84:30:84:30 | e |
42-
| Assignables.cs:92:10:92:14 | Item1 |
43-
| Assignables.cs:92:10:92:14 | x |
4442
| Assignables.cs:92:14:92:14 | x |
45-
| Assignables.cs:92:17:92:34 | Item2 |
46-
| Assignables.cs:92:18:92:23 | Item1 |
47-
| Assignables.cs:92:18:92:23 | b |
4843
| Assignables.cs:92:23:92:23 | b |
49-
| Assignables.cs:92:26:92:33 | Item2 |
50-
| Assignables.cs:92:26:92:33 | s |
5144
| Assignables.cs:92:33:92:33 | s |
52-
| Assignables.cs:95:14:95:15 | Item1 |
53-
| Assignables.cs:95:14:95:15 | f1 |
54-
| Assignables.cs:95:18:95:37 | Item2 |
55-
| Assignables.cs:95:24:95:25 | Item1 |
56-
| Assignables.cs:95:24:95:25 | f1 |
57-
| Assignables.cs:95:35:95:36 | Item2 |
58-
| Assignables.cs:95:35:95:36 | f3 |
5945
| Assignables.cs:95:40:95:44 | tuple |
60-
| Assignables.cs:96:10:96:17 | Item1 |
61-
| Assignables.cs:96:10:96:17 | Property |
62-
| Assignables.cs:96:20:96:26 | Item2 |
63-
| Assignables.cs:97:10:97:10 | Item1 |
64-
| Assignables.cs:97:10:97:10 | x |
65-
| Assignables.cs:97:13:97:18 | Item2 |
66-
| Assignables.cs:97:14:97:14 | Item1 |
67-
| Assignables.cs:97:14:97:14 | b |
68-
| Assignables.cs:97:17:97:17 | Item2 |
69-
| Assignables.cs:97:17:97:17 | x |
7046
| Assignables.cs:97:24:97:24 | Item1 |
7147
| Assignables.cs:97:27:97:36 | Item2 |
72-
| Assignables.cs:98:10:98:10 | Item1 |
73-
| Assignables.cs:98:10:98:10 | b |
74-
| Assignables.cs:98:13:98:18 | Item2 |
7548
| Assignables.cs:101:6:101:8 | Item1 |
7649
| Assignables.cs:101:11:101:24 | Item2 |
7750
| Assignables.cs:101:12:101:15 | Item1 |
@@ -99,13 +72,7 @@
9972
| Discards.cs:5:6:5:8 | Item1 |
10073
| Discards.cs:5:11:5:16 | Item2 |
10174
| Discards.cs:5:30:5:30 | x |
102-
| Discards.cs:19:10:19:14 | Item1 |
103-
| Discards.cs:19:10:19:14 | x |
10475
| Discards.cs:19:14:19:14 | x |
105-
| Discards.cs:19:17:19:17 | Item2 |
106-
| Discards.cs:20:10:20:10 | Item1 |
107-
| Discards.cs:20:13:20:17 | Item2 |
108-
| Discards.cs:20:13:20:17 | y |
10976
| Discards.cs:20:17:20:17 | y |
11077
| Discards.cs:20:32:20:32 | z |
11178
| Discards.cs:23:27:23:30 | args |

csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
| CSharp7.cs:72:17:72:19 | this access | CSharp7.cs:73:18:73:20 | this access |
4242
| CSharp7.cs:73:18:73:20 | [post] this access | CSharp7.cs:74:13:74:15 | this access |
4343
| CSharp7.cs:73:18:73:20 | this access | CSharp7.cs:74:13:74:15 | this access |
44-
| CSharp7.cs:74:13:74:15 | call to method F | CSharp7.cs:74:13:74:17 | access to field A |
44+
| CSharp7.cs:74:13:74:15 | call to method F | CSharp7.cs:74:13:74:17 | access to field Item1 |
4545
| CSharp7.cs:75:16:75:16 | [post] access to local variable z | CSharp7.cs:77:39:77:39 | access to local variable z |
4646
| CSharp7.cs:75:16:75:16 | access to local variable z | CSharp7.cs:77:39:77:39 | access to local variable z |
4747
| CSharp7.cs:75:28:75:28 | 1 | CSharp7.cs:75:27:75:35 | (..., ...) |
@@ -64,7 +64,7 @@
6464
| CSharp7.cs:79:23:79:24 | "" | CSharp7.cs:79:22:79:28 | (..., ...) |
6565
| CSharp7.cs:79:27:79:27 | access to local variable x | CSharp7.cs:79:22:79:28 | (..., ...) |
6666
| CSharp7.cs:82:21:82:21 | x | CSharp7.cs:84:20:84:20 | access to parameter x |
67-
| CSharp7.cs:84:16:84:24 | (..., ...) | CSharp7.cs:84:16:84:26 | access to field a |
67+
| CSharp7.cs:84:16:84:24 | (..., ...) | CSharp7.cs:84:16:84:26 | access to field Item1 |
6868
| CSharp7.cs:84:20:84:20 | access to parameter x | CSharp7.cs:84:16:84:24 | (..., ...) |
6969
| CSharp7.cs:84:23:84:23 | 2 | CSharp7.cs:84:16:84:24 | (..., ...) |
7070
| CSharp7.cs:87:10:87:18 | this | CSharp7.cs:92:18:92:28 | this access |

csharp/ql/test/library-tests/csharp7/PrintAst.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ CSharp7.cs:
156156
# 74| 3: [ExprStmt] ...;
157157
# 74| 0: [AssignExpr] ... = ...
158158
# 74| 0: [LocalVariableAccess] access to local variable x
159-
# 74| 1: [FieldAccess] access to field A
159+
# 74| 1: [FieldAccess] access to field Item1
160160
# 74| -1: [MethodCall] call to method F
161161
# 75| 4: [ExprStmt] ...;
162162
# 75| 0: [AssignExpr] ... = ...
@@ -218,7 +218,7 @@ CSharp7.cs:
218218
# 82| -1: [TypeMention] string
219219
# 83| 4: [BlockStmt] {...}
220220
# 84| 0: [ReturnStmt] return ...;
221-
# 84| 0: [FieldAccess] access to field a
221+
# 84| 0: [FieldAccess] access to field Item1
222222
# 84| -1: [TupleExpr] (..., ...)
223223
# 84| 0: [ParameterAccess] access to parameter x
224224
# 84| 1: [IntLiteral] 2

0 commit comments

Comments
 (0)