Extract non-named tuple types

This commit is contained in:
Tamas Vajk
2021-02-24 09:46:19 +01:00
parent 7e1eee5fe2
commit 1d70bfd011
10 changed files with 74 additions and 159 deletions

View File

@@ -17,7 +17,7 @@ namespace Semmle.Extraction.CSharp.Entities
type = new Lazy<Type>(() => Entities.Type.Create(cx, Symbol.Type));
}
public static Field Create(Context cx, IFieldSymbol field) => FieldFactory.Instance.CreateEntityFromSymbol(cx, field);
public static Field Create(Context cx, IFieldSymbol field) => FieldFactory.Instance.CreateEntityFromSymbol(cx, field.CorrespondingTupleField ?? field);
// Do not populate backing fields.
// Populate Tuple fields.

View File

@@ -13,7 +13,7 @@ namespace Semmle.Extraction.CSharp.Entities
/// </summary>
internal class TupleType : Type<INamedTypeSymbol>
{
public static TupleType Create(Context cx, INamedTypeSymbol type) => TupleTypeFactory.Instance.CreateEntityFromSymbol(cx, type);
public static TupleType Create(Context cx, INamedTypeSymbol type) => TupleTypeFactory.Instance.CreateEntityFromSymbol(cx, type.TupleUnderlyingType ?? type);
private class TupleTypeFactory : CachedEntityFactory<INamedTypeSymbol, TupleType>
{
@@ -41,7 +41,7 @@ namespace Semmle.Extraction.CSharp.Entities
PopulateType(trapFile);
PopulateGenerics();
var underlyingType = NamedType.CreateNamedTypeFromTupleType(Context, Symbol.TupleUnderlyingType ?? Symbol);
var underlyingType = NamedType.CreateNamedTypeFromTupleType(Context, Symbol);
trapFile.tuple_underlying_type(this, underlyingType);

View File

@@ -295,7 +295,7 @@ namespace Semmle.Extraction.CSharp
trapFile.BuildList(",", named.TupleElements,
(f, tb0) =>
{
trapFile.Write(f.Name);
trapFile.Write((f.CorrespondingTupleField ?? f).Name);
trapFile.Write(":");
f.Type.BuildOrWriteId(cx, tb0, symbolBeingDefined, addBaseClass);
}

View File

@@ -39,39 +39,12 @@
| Assignables.cs:78:22:78:22 | s |
| Assignables.cs:82:21:82:24 | temp |
| Assignables.cs:84:30:84:30 | e |
| Assignables.cs:92:10:92:14 | Item1 |
| Assignables.cs:92:10:92:14 | x |
| Assignables.cs:92:14:92:14 | x |
| Assignables.cs:92:17:92:34 | Item2 |
| Assignables.cs:92:18:92:23 | Item1 |
| Assignables.cs:92:18:92:23 | b |
| Assignables.cs:92:23:92:23 | b |
| Assignables.cs:92:26:92:33 | Item2 |
| Assignables.cs:92:26:92:33 | s |
| Assignables.cs:92:33:92:33 | s |
| Assignables.cs:95:14:95:15 | Item1 |
| Assignables.cs:95:14:95:15 | f1 |
| Assignables.cs:95:18:95:37 | Item2 |
| Assignables.cs:95:24:95:25 | Item1 |
| Assignables.cs:95:24:95:25 | f1 |
| Assignables.cs:95:35:95:36 | Item2 |
| Assignables.cs:95:35:95:36 | f3 |
| Assignables.cs:95:40:95:44 | tuple |
| Assignables.cs:96:10:96:17 | Item1 |
| Assignables.cs:96:10:96:17 | Property |
| Assignables.cs:96:20:96:26 | Item2 |
| Assignables.cs:97:10:97:10 | Item1 |
| Assignables.cs:97:10:97:10 | x |
| Assignables.cs:97:13:97:18 | Item2 |
| Assignables.cs:97:14:97:14 | Item1 |
| Assignables.cs:97:14:97:14 | b |
| Assignables.cs:97:17:97:17 | Item2 |
| Assignables.cs:97:17:97:17 | x |
| Assignables.cs:97:24:97:24 | Item1 |
| Assignables.cs:97:27:97:36 | Item2 |
| Assignables.cs:98:10:98:10 | Item1 |
| Assignables.cs:98:10:98:10 | b |
| Assignables.cs:98:13:98:18 | Item2 |
| Assignables.cs:101:6:101:8 | Item1 |
| Assignables.cs:101:11:101:24 | Item2 |
| Assignables.cs:101:12:101:15 | Item1 |
@@ -99,13 +72,7 @@
| Discards.cs:5:6:5:8 | Item1 |
| Discards.cs:5:11:5:16 | Item2 |
| Discards.cs:5:30:5:30 | x |
| Discards.cs:19:10:19:14 | Item1 |
| Discards.cs:19:10:19:14 | x |
| Discards.cs:19:14:19:14 | x |
| Discards.cs:19:17:19:17 | Item2 |
| Discards.cs:20:10:20:10 | Item1 |
| Discards.cs:20:13:20:17 | Item2 |
| Discards.cs:20:13:20:17 | y |
| Discards.cs:20:17:20:17 | y |
| Discards.cs:20:32:20:32 | z |
| Discards.cs:23:27:23:30 | args |

View File

@@ -41,7 +41,7 @@
| CSharp7.cs:72:17:72:19 | this access | CSharp7.cs:73:18:73:20 | this access |
| CSharp7.cs:73:18:73:20 | [post] this access | CSharp7.cs:74:13:74:15 | this access |
| CSharp7.cs:73:18:73:20 | this access | CSharp7.cs:74:13:74:15 | this access |
| CSharp7.cs:74:13:74:15 | call to method F | CSharp7.cs:74:13:74:17 | access to field A |
| CSharp7.cs:74:13:74:15 | call to method F | CSharp7.cs:74:13:74:17 | access to field Item1 |
| CSharp7.cs:75:16:75:16 | [post] access to local variable z | CSharp7.cs:77:39:77:39 | access to local variable z |
| CSharp7.cs:75:16:75:16 | access to local variable z | CSharp7.cs:77:39:77:39 | access to local variable z |
| CSharp7.cs:75:28:75:28 | 1 | CSharp7.cs:75:27:75:35 | (..., ...) |
@@ -64,7 +64,7 @@
| CSharp7.cs:79:23:79:24 | "" | CSharp7.cs:79:22:79:28 | (..., ...) |
| CSharp7.cs:79:27:79:27 | access to local variable x | CSharp7.cs:79:22:79:28 | (..., ...) |
| CSharp7.cs:82:21:82:21 | x | CSharp7.cs:84:20:84:20 | access to parameter x |
| CSharp7.cs:84:16:84:24 | (..., ...) | CSharp7.cs:84:16:84:26 | access to field a |
| CSharp7.cs:84:16:84:24 | (..., ...) | CSharp7.cs:84:16:84:26 | access to field Item1 |
| CSharp7.cs:84:20:84:20 | access to parameter x | CSharp7.cs:84:16:84:24 | (..., ...) |
| CSharp7.cs:84:23:84:23 | 2 | CSharp7.cs:84:16:84:24 | (..., ...) |
| CSharp7.cs:87:10:87:18 | this | CSharp7.cs:92:18:92:28 | this access |

View File

@@ -156,7 +156,7 @@ CSharp7.cs:
# 74| 3: [ExprStmt] ...;
# 74| 0: [AssignExpr] ... = ...
# 74| 0: [LocalVariableAccess] access to local variable x
# 74| 1: [FieldAccess] access to field A
# 74| 1: [FieldAccess] access to field Item1
# 74| -1: [MethodCall] call to method F
# 75| 4: [ExprStmt] ...;
# 75| 0: [AssignExpr] ... = ...
@@ -218,7 +218,7 @@ CSharp7.cs:
# 82| -1: [TypeMention] string
# 83| 4: [BlockStmt] {...}
# 84| 0: [ReturnStmt] return ...;
# 84| 0: [FieldAccess] access to field a
# 84| 0: [FieldAccess] access to field Item1
# 84| -1: [TupleExpr] (..., ...)
# 84| 0: [ParameterAccess] access to parameter x
# 84| 1: [IntLiteral] 2

View File

@@ -1,45 +1,45 @@
| CSharp7.cs:66:16:66:27 | (..., ...) | CSharp7.cs:64:5:64:18 | (Int32,Int32) | 0 | CSharp7.cs:66:20:66:20 | 1 |
| CSharp7.cs:66:16:66:27 | (..., ...) | CSharp7.cs:64:5:64:18 | (Int32,Int32) | 1 | CSharp7.cs:66:26:66:26 | 2 |
| CSharp7.cs:71:9:71:22 | (..., ...) | CSharp7.cs:71:9:71:22 | (Int32,Int32) | 0 | CSharp7.cs:71:14:71:14 | Int32 x |
| CSharp7.cs:71:9:71:22 | (..., ...) | CSharp7.cs:71:9:71:22 | (Int32,Int32) | 1 | CSharp7.cs:71:21:71:21 | Int32 y |
| CSharp7.cs:73:9:73:14 | (..., ...) | CSharp7.cs:71:9:71:22 | (Int32,Int32) | 0 | CSharp7.cs:73:10:73:10 | access to local variable x |
| CSharp7.cs:73:9:73:14 | (..., ...) | CSharp7.cs:71:9:71:22 | (Int32,Int32) | 1 | CSharp7.cs:73:13:73:13 | access to local variable y |
| CSharp7.cs:75:9:75:23 | (..., ...) | CSharp7.cs:75:9:75:23 | (Int32,Int32,Int32) | 0 | CSharp7.cs:75:10:75:10 | access to local variable x |
| CSharp7.cs:75:9:75:23 | (..., ...) | CSharp7.cs:75:9:75:23 | (Int32,Int32,Int32) | 1 | CSharp7.cs:75:13:75:13 | access to local variable y |
| CSharp7.cs:75:9:75:23 | (..., ...) | CSharp7.cs:75:9:75:23 | (Int32,Int32,Int32) | 2 | CSharp7.cs:75:16:75:22 | access to field Item1 |
| CSharp7.cs:66:16:66:27 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:66:20:66:20 | 1 |
| CSharp7.cs:66:16:66:27 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:66:26:66:26 | 2 |
| CSharp7.cs:71:9:71:22 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:71:14:71:14 | Int32 x |
| CSharp7.cs:71:9:71:22 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:71:21:71:21 | Int32 y |
| CSharp7.cs:73:9:73:14 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:73:10:73:10 | access to local variable x |
| CSharp7.cs:73:9:73:14 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:73:13:73:13 | access to local variable y |
| CSharp7.cs:75:9:75:23 | (..., ...) | file://:0:0:0:0 | (Int32,Int32,Int32) | 0 | CSharp7.cs:75:10:75:10 | access to local variable x |
| CSharp7.cs:75:9:75:23 | (..., ...) | file://:0:0:0:0 | (Int32,Int32,Int32) | 1 | CSharp7.cs:75:13:75:13 | access to local variable y |
| CSharp7.cs:75:9:75:23 | (..., ...) | file://:0:0:0:0 | (Int32,Int32,Int32) | 2 | CSharp7.cs:75:16:75:22 | access to field Item1 |
| CSharp7.cs:75:27:75:35 | (..., ...) | file://:0:0:0:0 | (Int32,Int32,Int32) | 0 | CSharp7.cs:75:28:75:28 | 1 |
| CSharp7.cs:75:27:75:35 | (..., ...) | file://:0:0:0:0 | (Int32,Int32,Int32) | 1 | CSharp7.cs:75:31:75:31 | 2 |
| CSharp7.cs:75:27:75:35 | (..., ...) | file://:0:0:0:0 | (Int32,Int32,Int32) | 2 | CSharp7.cs:75:34:75:34 | 3 |
| CSharp7.cs:76:9:76:14 | (..., ...) | CSharp7.cs:71:9:71:22 | (Int32,Int32) | 0 | CSharp7.cs:76:10:76:10 | access to local variable x |
| CSharp7.cs:76:9:76:14 | (..., ...) | CSharp7.cs:71:9:71:22 | (Int32,Int32) | 1 | CSharp7.cs:76:13:76:13 | access to local variable y |
| CSharp7.cs:76:18:76:23 | (..., ...) | CSharp7.cs:71:9:71:22 | (Int32,Int32) | 0 | CSharp7.cs:76:19:76:19 | access to local variable x |
| CSharp7.cs:76:18:76:23 | (..., ...) | CSharp7.cs:71:9:71:22 | (Int32,Int32) | 1 | CSharp7.cs:76:22:76:22 | access to local variable y |
| CSharp7.cs:76:9:76:14 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:76:10:76:10 | access to local variable x |
| CSharp7.cs:76:9:76:14 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:76:13:76:13 | access to local variable y |
| CSharp7.cs:76:18:76:23 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:76:19:76:19 | access to local variable x |
| CSharp7.cs:76:18:76:23 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:76:22:76:22 | access to local variable y |
| CSharp7.cs:76:27:76:32 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:76:28:76:28 | 1 |
| CSharp7.cs:76:27:76:32 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:76:31:76:31 | 2 |
| CSharp7.cs:77:9:77:31 | (..., ...) | CSharp7.cs:77:9:77:31 | (Int32,(Int32,Int32)) | 0 | CSharp7.cs:77:14:77:14 | Int32 a |
| CSharp7.cs:77:9:77:31 | (..., ...) | CSharp7.cs:77:9:77:31 | (Int32,(Int32,Int32)) | 1 | CSharp7.cs:77:17:77:30 | (..., ...) |
| CSharp7.cs:77:17:77:30 | (..., ...) | CSharp7.cs:77:17:77:30 | (Int32,Int32) | 0 | CSharp7.cs:77:22:77:22 | Int32 b |
| CSharp7.cs:77:17:77:30 | (..., ...) | CSharp7.cs:77:17:77:30 | (Int32,Int32) | 1 | CSharp7.cs:77:29:77:29 | Int32 c |
| CSharp7.cs:77:35:77:40 | (..., ...) | CSharp7.cs:77:35:77:40 | (Int32,(Int32,Int32)) | 0 | CSharp7.cs:77:36:77:36 | 1 |
| CSharp7.cs:77:35:77:40 | (..., ...) | CSharp7.cs:77:35:77:40 | (Int32,(Int32,Int32)) | 1 | CSharp7.cs:77:39:77:39 | access to local variable z |
| CSharp7.cs:78:9:78:19 | (..., ...) | CSharp7.cs:77:9:77:31 | (Int32,(Int32,Int32)) | 0 | CSharp7.cs:78:10:78:10 | access to local variable a |
| CSharp7.cs:78:9:78:19 | (..., ...) | CSharp7.cs:77:9:77:31 | (Int32,(Int32,Int32)) | 1 | CSharp7.cs:78:13:78:18 | (..., ...) |
| CSharp7.cs:78:13:78:18 | (..., ...) | CSharp7.cs:77:17:77:30 | (Int32,Int32) | 0 | CSharp7.cs:78:14:78:14 | access to local variable b |
| CSharp7.cs:78:13:78:18 | (..., ...) | CSharp7.cs:77:17:77:30 | (Int32,Int32) | 1 | CSharp7.cs:78:17:78:17 | access to local variable c |
| CSharp7.cs:78:23:78:33 | (..., ...) | CSharp7.cs:78:23:78:33 | (Int32,(Int32,Int32)) | 0 | CSharp7.cs:78:24:78:24 | access to local variable b |
| CSharp7.cs:78:23:78:33 | (..., ...) | CSharp7.cs:78:23:78:33 | (Int32,(Int32,Int32)) | 1 | CSharp7.cs:78:27:78:32 | (..., ...) |
| CSharp7.cs:78:27:78:32 | (..., ...) | CSharp7.cs:78:27:78:32 | (Int32,Int32) | 0 | CSharp7.cs:78:28:78:28 | access to local variable c |
| CSharp7.cs:78:27:78:32 | (..., ...) | CSharp7.cs:78:27:78:32 | (Int32,Int32) | 1 | CSharp7.cs:78:31:78:31 | access to local variable a |
| CSharp7.cs:77:9:77:31 | (..., ...) | file://:0:0:0:0 | (Int32,(Int32,Int32)) | 0 | CSharp7.cs:77:14:77:14 | Int32 a |
| CSharp7.cs:77:9:77:31 | (..., ...) | file://:0:0:0:0 | (Int32,(Int32,Int32)) | 1 | CSharp7.cs:77:17:77:30 | (..., ...) |
| CSharp7.cs:77:17:77:30 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:77:22:77:22 | Int32 b |
| CSharp7.cs:77:17:77:30 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:77:29:77:29 | Int32 c |
| CSharp7.cs:77:35:77:40 | (..., ...) | file://:0:0:0:0 | (Int32,(Int32,Int32)) | 0 | CSharp7.cs:77:36:77:36 | 1 |
| CSharp7.cs:77:35:77:40 | (..., ...) | file://:0:0:0:0 | (Int32,(Int32,Int32)) | 1 | CSharp7.cs:77:39:77:39 | access to local variable z |
| CSharp7.cs:78:9:78:19 | (..., ...) | file://:0:0:0:0 | (Int32,(Int32,Int32)) | 0 | CSharp7.cs:78:10:78:10 | access to local variable a |
| CSharp7.cs:78:9:78:19 | (..., ...) | file://:0:0:0:0 | (Int32,(Int32,Int32)) | 1 | CSharp7.cs:78:13:78:18 | (..., ...) |
| CSharp7.cs:78:13:78:18 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:78:14:78:14 | access to local variable b |
| CSharp7.cs:78:13:78:18 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:78:17:78:17 | access to local variable c |
| CSharp7.cs:78:23:78:33 | (..., ...) | file://:0:0:0:0 | (Int32,(Int32,Int32)) | 0 | CSharp7.cs:78:24:78:24 | access to local variable b |
| CSharp7.cs:78:23:78:33 | (..., ...) | file://:0:0:0:0 | (Int32,(Int32,Int32)) | 1 | CSharp7.cs:78:27:78:32 | (..., ...) |
| CSharp7.cs:78:27:78:32 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:78:28:78:28 | access to local variable c |
| CSharp7.cs:78:27:78:32 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:78:31:78:31 | access to local variable a |
| CSharp7.cs:79:9:79:18 | (..., ...) | file://:0:0:0:0 | null | 0 | CSharp7.cs:79:14:79:14 | String i |
| CSharp7.cs:79:9:79:18 | (..., ...) | file://:0:0:0:0 | null | 1 | CSharp7.cs:79:17:79:17 | Int32 j |
| CSharp7.cs:79:22:79:28 | (..., ...) | CSharp7.cs:79:22:79:28 | (String,Int32) | 0 | CSharp7.cs:79:23:79:24 | "" |
| CSharp7.cs:79:22:79:28 | (..., ...) | CSharp7.cs:79:22:79:28 | (String,Int32) | 1 | CSharp7.cs:79:27:79:27 | access to local variable x |
| CSharp7.cs:84:16:84:24 | (..., ...) | CSharp7.cs:84:16:84:24 | (String,Int32) | 0 | CSharp7.cs:84:20:84:20 | access to parameter x |
| CSharp7.cs:84:16:84:24 | (..., ...) | CSharp7.cs:84:16:84:24 | (String,Int32) | 1 | CSharp7.cs:84:23:84:23 | 2 |
| CSharp7.cs:79:22:79:28 | (..., ...) | file://:0:0:0:0 | (String,Int32) | 0 | CSharp7.cs:79:23:79:24 | "" |
| CSharp7.cs:79:22:79:28 | (..., ...) | file://:0:0:0:0 | (String,Int32) | 1 | CSharp7.cs:79:27:79:27 | access to local variable x |
| CSharp7.cs:84:16:84:24 | (..., ...) | file://:0:0:0:0 | (String,Int32) | 0 | CSharp7.cs:84:20:84:20 | access to parameter x |
| CSharp7.cs:84:16:84:24 | (..., ...) | file://:0:0:0:0 | (String,Int32) | 1 | CSharp7.cs:84:23:84:23 | 2 |
| CSharp7.cs:89:18:89:34 | (..., ...) | CSharp7.cs:89:18:89:34 | (String,String) | 0 | CSharp7.cs:89:19:89:27 | "tainted" |
| CSharp7.cs:89:18:89:34 | (..., ...) | CSharp7.cs:89:18:89:34 | (String,String) | 1 | CSharp7.cs:89:30:89:33 | "X2" |
| CSharp7.cs:90:9:90:24 | (..., ...) | CSharp7.cs:90:9:90:24 | (String,String) | 0 | CSharp7.cs:90:14:90:15 | String t2 |
| CSharp7.cs:90:9:90:24 | (..., ...) | CSharp7.cs:90:9:90:24 | (String,String) | 1 | CSharp7.cs:90:22:90:23 | String t3 |
| CSharp7.cs:90:9:90:24 | (..., ...) | CSharp7.cs:89:18:89:34 | (String,String) | 0 | CSharp7.cs:90:14:90:15 | String t2 |
| CSharp7.cs:90:9:90:24 | (..., ...) | CSharp7.cs:89:18:89:34 | (String,String) | 1 | CSharp7.cs:90:22:90:23 | String t3 |
| CSharp7.cs:97:18:97:38 | (..., ...) | file://:0:0:0:0 | (Int32,String) | 0 | CSharp7.cs:97:19:97:19 | 1 |
| CSharp7.cs:97:18:97:38 | (..., ...) | file://:0:0:0:0 | (Int32,String) | 1 | CSharp7.cs:97:22:97:37 | "TupleExprNode1" |
| CSharp7.cs:98:18:98:43 | (..., ...) | CSharp7.cs:98:18:98:43 | (Int32,(String,Int32)) | 0 | CSharp7.cs:98:19:98:19 | 1 |
@@ -52,24 +52,24 @@
| CSharp7.cs:104:18:104:47 | (..., ...) | CSharp7.cs:98:18:98:43 | (Int32,(String,Int32)) | 1 | CSharp7.cs:104:22:104:46 | (..., ...) |
| CSharp7.cs:104:22:104:46 | (..., ...) | file://:0:0:0:0 | (String,Int32) | 0 | CSharp7.cs:104:23:104:42 | "TupleMemberAccess2" |
| CSharp7.cs:104:22:104:46 | (..., ...) | file://:0:0:0:0 | (String,Int32) | 1 | CSharp7.cs:104:45:104:45 | 1 |
| CSharp7.cs:109:9:109:24 | (..., ...) | CSharp7.cs:109:9:109:24 | (String,(Int32,Int32)) | 0 | CSharp7.cs:109:14:109:15 | String m1 |
| CSharp7.cs:109:9:109:24 | (..., ...) | CSharp7.cs:109:9:109:24 | (String,(Int32,Int32)) | 1 | CSharp7.cs:109:22:109:23 | (Int32,Int32) m2 |
| CSharp7.cs:109:9:109:24 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 0 | CSharp7.cs:109:14:109:15 | String m1 |
| CSharp7.cs:109:9:109:24 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 1 | CSharp7.cs:109:22:109:23 | (Int32,Int32) m2 |
| CSharp7.cs:109:28:109:46 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 0 | CSharp7.cs:109:29:109:37 | "DefUse1" |
| CSharp7.cs:109:28:109:46 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 1 | CSharp7.cs:109:40:109:45 | (..., ...) |
| CSharp7.cs:109:40:109:45 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:109:41:109:41 | 0 |
| CSharp7.cs:109:40:109:45 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:109:44:109:44 | 1 |
| CSharp7.cs:112:9:112:22 | (..., ...) | CSharp7.cs:112:9:112:22 | (String,(Int32,Int32)) | 0 | CSharp7.cs:112:10:112:11 | access to local variable m3 |
| CSharp7.cs:112:9:112:22 | (..., ...) | CSharp7.cs:112:9:112:22 | (String,(Int32,Int32)) | 1 | CSharp7.cs:112:14:112:21 | (..., ...) |
| CSharp7.cs:112:14:112:21 | (..., ...) | CSharp7.cs:112:14:112:21 | (Int32,Int32) | 0 | CSharp7.cs:112:15:112:16 | access to local variable m4 |
| CSharp7.cs:112:14:112:21 | (..., ...) | CSharp7.cs:112:14:112:21 | (Int32,Int32) | 1 | CSharp7.cs:112:19:112:20 | access to local variable m5 |
| CSharp7.cs:112:26:112:33 | (..., ...) | CSharp7.cs:109:9:109:24 | (String,(Int32,Int32)) | 0 | CSharp7.cs:112:27:112:28 | access to local variable m1 |
| CSharp7.cs:112:26:112:33 | (..., ...) | CSharp7.cs:109:9:109:24 | (String,(Int32,Int32)) | 1 | CSharp7.cs:112:31:112:32 | access to local variable m2 |
| CSharp7.cs:114:9:114:34 | (..., ...) | CSharp7.cs:114:9:114:34 | (String,(Int32,Int32)) | 0 | CSharp7.cs:114:14:114:15 | String m7 |
| CSharp7.cs:114:9:114:34 | (..., ...) | CSharp7.cs:114:9:114:34 | (String,(Int32,Int32)) | 1 | CSharp7.cs:114:18:114:33 | (..., ...) |
| CSharp7.cs:114:18:114:33 | (..., ...) | CSharp7.cs:114:18:114:33 | (Int32,Int32) | 0 | CSharp7.cs:114:23:114:24 | Int32 m8 |
| CSharp7.cs:114:18:114:33 | (..., ...) | CSharp7.cs:114:18:114:33 | (Int32,Int32) | 1 | CSharp7.cs:114:31:114:32 | Int32 m9 |
| CSharp7.cs:114:38:114:45 | (..., ...) | CSharp7.cs:109:9:109:24 | (String,(Int32,Int32)) | 0 | CSharp7.cs:114:39:114:40 | access to local variable m1 |
| CSharp7.cs:114:38:114:45 | (..., ...) | CSharp7.cs:109:9:109:24 | (String,(Int32,Int32)) | 1 | CSharp7.cs:114:43:114:44 | access to local variable m2 |
| CSharp7.cs:112:9:112:22 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 0 | CSharp7.cs:112:10:112:11 | access to local variable m3 |
| CSharp7.cs:112:9:112:22 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 1 | CSharp7.cs:112:14:112:21 | (..., ...) |
| CSharp7.cs:112:14:112:21 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:112:15:112:16 | access to local variable m4 |
| CSharp7.cs:112:14:112:21 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:112:19:112:20 | access to local variable m5 |
| CSharp7.cs:112:26:112:33 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 0 | CSharp7.cs:112:27:112:28 | access to local variable m1 |
| CSharp7.cs:112:26:112:33 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 1 | CSharp7.cs:112:31:112:32 | access to local variable m2 |
| CSharp7.cs:114:9:114:34 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 0 | CSharp7.cs:114:14:114:15 | String m7 |
| CSharp7.cs:114:9:114:34 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 1 | CSharp7.cs:114:18:114:33 | (..., ...) |
| CSharp7.cs:114:18:114:33 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:114:23:114:24 | Int32 m8 |
| CSharp7.cs:114:18:114:33 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 1 | CSharp7.cs:114:31:114:32 | Int32 m9 |
| CSharp7.cs:114:38:114:45 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 0 | CSharp7.cs:114:39:114:40 | access to local variable m1 |
| CSharp7.cs:114:38:114:45 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 1 | CSharp7.cs:114:43:114:44 | access to local variable m2 |
| CSharp7.cs:114:49:114:67 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 0 | CSharp7.cs:114:50:114:58 | "DefUse2" |
| CSharp7.cs:114:49:114:67 | (..., ...) | file://:0:0:0:0 | (String,(Int32,Int32)) | 1 | CSharp7.cs:114:61:114:66 | (..., ...) |
| CSharp7.cs:114:61:114:66 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | 0 | CSharp7.cs:114:62:114:62 | 0 |
@@ -78,15 +78,15 @@
| CSharp7.cs:218:16:218:23 | (..., ...) | CSharp7.cs:215:5:215:17 | (Int32,Double) | 1 | CSharp7.cs:218:20:218:22 | 0 |
| CSharp7.cs:224:9:224:14 | (..., ...) | CSharp7.cs:215:5:215:17 | (Int32,Double) | 0 | CSharp7.cs:224:10:224:10 | _ |
| CSharp7.cs:224:9:224:14 | (..., ...) | CSharp7.cs:215:5:215:17 | (Int32,Double) | 1 | CSharp7.cs:224:13:224:13 | _ |
| CSharp7.cs:225:9:225:18 | (..., ...) | CSharp7.cs:225:9:225:18 | (Int32,Double) | 0 | CSharp7.cs:225:14:225:14 | Int32 x |
| CSharp7.cs:225:9:225:18 | (..., ...) | CSharp7.cs:225:9:225:18 | (Int32,Double) | 1 | CSharp7.cs:225:17:225:17 | _ |
| CSharp7.cs:226:9:226:18 | (..., ...) | CSharp7.cs:226:9:226:18 | (Int32,Double) | 0 | CSharp7.cs:226:10:226:10 | _ |
| CSharp7.cs:226:9:226:18 | (..., ...) | CSharp7.cs:226:9:226:18 | (Int32,Double) | 1 | CSharp7.cs:226:17:226:17 | Double y |
| CSharp7.cs:285:40:285:61 | (..., ...) | CSharp7.cs:285:40:285:61 | (Int32,String) | 0 | CSharp7.cs:285:41:285:48 | access to property Key |
| CSharp7.cs:285:40:285:61 | (..., ...) | CSharp7.cs:285:40:285:61 | (Int32,String) | 1 | CSharp7.cs:285:51:285:60 | access to property Value |
| CSharp7.cs:287:18:287:34 | (..., ...) | CSharp7.cs:287:18:287:34 | (Int32,String) | 0 | CSharp7.cs:287:23:287:23 | Int32 a |
| CSharp7.cs:287:18:287:34 | (..., ...) | CSharp7.cs:287:18:287:34 | (Int32,String) | 1 | CSharp7.cs:287:33:287:33 | String b |
| CSharp7.cs:289:18:289:31 | (..., ...) | CSharp7.cs:287:18:287:34 | (Int32,String) | 0 | CSharp7.cs:289:23:289:23 | Int32 a |
| CSharp7.cs:289:18:289:31 | (..., ...) | CSharp7.cs:287:18:287:34 | (Int32,String) | 1 | CSharp7.cs:289:30:289:30 | String b |
| CSharp7.cs:225:9:225:18 | (..., ...) | CSharp7.cs:215:5:215:17 | (Int32,Double) | 0 | CSharp7.cs:225:14:225:14 | Int32 x |
| CSharp7.cs:225:9:225:18 | (..., ...) | CSharp7.cs:215:5:215:17 | (Int32,Double) | 1 | CSharp7.cs:225:17:225:17 | _ |
| CSharp7.cs:226:9:226:18 | (..., ...) | CSharp7.cs:215:5:215:17 | (Int32,Double) | 0 | CSharp7.cs:226:10:226:10 | _ |
| CSharp7.cs:226:9:226:18 | (..., ...) | CSharp7.cs:215:5:215:17 | (Int32,Double) | 1 | CSharp7.cs:226:17:226:17 | Double y |
| CSharp7.cs:285:40:285:61 | (..., ...) | file://:0:0:0:0 | (Int32,String) | 0 | CSharp7.cs:285:41:285:48 | access to property Key |
| CSharp7.cs:285:40:285:61 | (..., ...) | file://:0:0:0:0 | (Int32,String) | 1 | CSharp7.cs:285:51:285:60 | access to property Value |
| CSharp7.cs:287:18:287:34 | (..., ...) | file://:0:0:0:0 | (Int32,String) | 0 | CSharp7.cs:287:23:287:23 | Int32 a |
| CSharp7.cs:287:18:287:34 | (..., ...) | file://:0:0:0:0 | (Int32,String) | 1 | CSharp7.cs:287:33:287:33 | String b |
| CSharp7.cs:289:18:289:31 | (..., ...) | file://:0:0:0:0 | (Int32,String) | 0 | CSharp7.cs:289:23:289:23 | Int32 a |
| CSharp7.cs:289:18:289:31 | (..., ...) | file://:0:0:0:0 | (Int32,String) | 1 | CSharp7.cs:289:30:289:30 | String b |
| CSharp7.cs:291:18:291:27 | (..., ...) | file://:0:0:0:0 | null | 0 | CSharp7.cs:291:23:291:23 | Int32 a |
| CSharp7.cs:291:18:291:27 | (..., ...) | file://:0:0:0:0 | null | 1 | CSharp7.cs:291:26:291:26 | String b |

View File

@@ -1,49 +1,10 @@
| (Int32,(Int32,Int32)) | (int, (int, int)) | ValueTuple<Int32, (Int32,Int32)> | 2 | 0 | CSharp7.cs:77:10:77:14 | a |
| (Int32,(Int32,Int32)) | (int, (int, int)) | ValueTuple<Int32, (Int32,Int32)> | 2 | 0 | CSharp7.cs:77:36:77:36 | Item1 |
| (Int32,(Int32,Int32)) | (int, (int, int)) | ValueTuple<Int32, (Int32,Int32)> | 2 | 0 | CSharp7.cs:78:24:78:24 | b |
| (Int32,(Int32,Int32)) | (int, (int, int)) | ValueTuple<Int32, (Int32,Int32)> | 2 | 1 | CSharp7.cs:77:17:77:30 | Item2 |
| (Int32,(Int32,Int32)) | (int, (int, int)) | ValueTuple<Int32, (Int32,Int32)> | 2 | 1 | CSharp7.cs:77:39:77:39 | z |
| (Int32,(Int32,Int32)) | (int, (int, int)) | ValueTuple<Int32, (Int32,Int32)> | 2 | 1 | CSharp7.cs:78:27:78:32 | Item2 |
| (Int32,(String,Int32)) | (int, (string, int)) | ValueTuple<Int32, (String,Int32)> | 2 | 0 | CSharp7.cs:98:19:98:19 | Item1 |
| (Int32,(String,Int32)) | (int, (string, int)) | ValueTuple<Int32, (String,Int32)> | 2 | 1 | CSharp7.cs:98:22:98:42 | Item2 |
| (Int32,Double) | (int, double) | ValueTuple<Int32, Double> | 2 | 0 | CSharp7.cs:215:6:215:8 | Item1 |
| (Int32,Double) | (int, double) | ValueTuple<Int32, Double> | 2 | 0 | CSharp7.cs:225:10:225:14 | x |
| (Int32,Double) | (int, double) | ValueTuple<Int32, Double> | 2 | 0 | CSharp7.cs:226:10:226:10 | Item1 |
| (Int32,Double) | (int, double) | ValueTuple<Int32, Double> | 2 | 1 | CSharp7.cs:215:11:215:16 | Item2 |
| (Int32,Double) | (int, double) | ValueTuple<Int32, Double> | 2 | 1 | CSharp7.cs:225:17:225:17 | Item2 |
| (Int32,Double) | (int, double) | ValueTuple<Int32, Double> | 2 | 1 | CSharp7.cs:226:13:226:17 | y |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 0 | CSharp7.cs:64:10:64:10 | A |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 0 | CSharp7.cs:71:10:71:14 | x |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 0 | CSharp7.cs:77:18:77:22 | b |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 0 | CSharp7.cs:78:28:78:28 | c |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 0 | CSharp7.cs:112:15:112:16 | m4 |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 0 | CSharp7.cs:114:19:114:24 | m8 |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 1 | CSharp7.cs:64:17:64:17 | B |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 1 | CSharp7.cs:71:17:71:21 | y |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 1 | CSharp7.cs:77:25:77:29 | c |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 1 | CSharp7.cs:78:31:78:31 | a |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 1 | CSharp7.cs:112:19:112:20 | m5 |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 1 | CSharp7.cs:114:27:114:32 | m9 |
| (Int32,Int32,Int32) | (int, int, int) | ValueTuple<Int32, Int32, Int32> | 3 | 0 | CSharp7.cs:75:10:75:10 | x |
| (Int32,Int32,Int32) | (int, int, int) | ValueTuple<Int32, Int32, Int32> | 3 | 1 | CSharp7.cs:75:13:75:13 | y |
| (Int32,Int32,Int32) | (int, int, int) | ValueTuple<Int32, Int32, Int32> | 3 | 2 | CSharp7.cs:75:16:75:22 | Item3 |
| (Int32,String) | (int, string) | ValueTuple<Int32, String> | 2 | 0 | CSharp7.cs:285:41:285:48 | Key |
| (Int32,String) | (int, string) | ValueTuple<Int32, String> | 2 | 0 | CSharp7.cs:287:19:287:23 | a |
| (Int32,String) | (int, string) | ValueTuple<Int32, String> | 2 | 1 | CSharp7.cs:285:51:285:60 | Value |
| (Int32,String) | (int, string) | ValueTuple<Int32, String> | 2 | 1 | CSharp7.cs:287:26:287:33 | b |
| (String,(Int32,Int32)) | (string, (int, int)) | ValueTuple<String, (Int32,Int32)> | 2 | 0 | CSharp7.cs:109:10:109:15 | m1 |
| (String,(Int32,Int32)) | (string, (int, int)) | ValueTuple<String, (Int32,Int32)> | 2 | 0 | CSharp7.cs:112:10:112:11 | m3 |
| (String,(Int32,Int32)) | (string, (int, int)) | ValueTuple<String, (Int32,Int32)> | 2 | 0 | CSharp7.cs:114:10:114:15 | m7 |
| (String,(Int32,Int32)) | (string, (int, int)) | ValueTuple<String, (Int32,Int32)> | 2 | 1 | CSharp7.cs:109:18:109:23 | m2 |
| (String,(Int32,Int32)) | (string, (int, int)) | ValueTuple<String, (Int32,Int32)> | 2 | 1 | CSharp7.cs:112:14:112:21 | Item2 |
| (String,(Int32,Int32)) | (string, (int, int)) | ValueTuple<String, (Int32,Int32)> | 2 | 1 | CSharp7.cs:114:18:114:33 | Item2 |
| (String,Int32) | (string, int) | ValueTuple<String, Int32> | 2 | 0 | CSharp7.cs:79:14:79:14 | i |
| (String,Int32) | (string, int) | ValueTuple<String, Int32> | 2 | 0 | CSharp7.cs:79:23:79:24 | Item1 |
| (String,Int32) | (string, int) | ValueTuple<String, Int32> | 2 | 0 | CSharp7.cs:84:17:84:17 | a |
| (String,Int32) | (string, int) | ValueTuple<String, Int32> | 2 | 1 | CSharp7.cs:79:17:79:17 | j |
| (String,Int32) | (string, int) | ValueTuple<String, Int32> | 2 | 1 | CSharp7.cs:79:27:79:27 | x |
| (String,Int32) | (string, int) | ValueTuple<String, Int32> | 2 | 1 | CSharp7.cs:84:23:84:23 | Item2 |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 0 | CSharp7.cs:64:10:64:10 | Item1 |
| (Int32,Int32) | (int, int) | ValueTuple<Int32, Int32> | 2 | 1 | file://:0:0:0:0 | Item2 |
| (String,Int32) | (string, int) | ValueTuple<String, Int32> | 2 | 0 | CSharp7.cs:84:17:84:17 | Item1 |
| (String,Int32) | (string, int) | ValueTuple<String, Int32> | 2 | 1 | file://:0:0:0:0 | Item2 |
| (String,String) | (string, string) | ValueTuple<String, String> | 2 | 0 | CSharp7.cs:89:19:89:27 | Item1 |
| (String,String) | (string, string) | ValueTuple<String, String> | 2 | 0 | CSharp7.cs:90:10:90:15 | t2 |
| (String,String) | (string, string) | ValueTuple<String, String> | 2 | 1 | CSharp7.cs:89:30:89:33 | Item2 |
| (String,String) | (string, string) | ValueTuple<String, String> | 2 | 1 | CSharp7.cs:90:18:90:23 | t3 |

View File

@@ -192,12 +192,12 @@ tupleTypes
| patterns.cs:86:15:86:19 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:91:16:91:20 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:108:9:108:20 | (..., ...) | file://:0:0:0:0 | null |
| patterns.cs:108:24:108:31 | (..., ...) | patterns.cs:108:24:108:31 | (Int32,Int32) |
| patterns.cs:108:24:108:31 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:110:22:110:26 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:111:22:111:26 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:115:9:115:16 | (..., ...) | patterns.cs:108:9:108:20 | (Int32,Int32) |
| patterns.cs:115:20:115:27 | (..., ...) | patterns.cs:108:24:108:31 | (Int32,Int32) |
| patterns.cs:117:27:117:33 | (..., ...) | patterns.cs:117:27:117:33 | (Int32,Int32) |
| patterns.cs:118:28:118:34 | (..., ...) | patterns.cs:118:28:118:34 | (Int32,Int32) |
| patterns.cs:115:9:115:16 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:115:20:115:27 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:117:27:117:33 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:118:28:118:34 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:119:33:119:38 | (..., ...) | patterns.cs:86:15:86:19 | (Int32,Int32) |
| patterns.cs:131:13:131:22 | (..., ...) | file://:0:0:0:0 | null |

View File

@@ -7,7 +7,6 @@ constrainedTypeParameterSubsumes
| Unification.cs:8:10:8:11 | T2 | Unification.cs:30:12:30:24 | (string, int) |
| Unification.cs:8:10:8:11 | T2 | Unification.cs:31:12:31:23 | (string, T9) |
| Unification.cs:8:10:8:11 | T2 | Unification.cs:32:12:32:19 | (T8, T9) |
| Unification.cs:8:10:8:11 | T2 | Unification.cs:33:12:33:23 | (T8, T9) |
| Unification.cs:9:10:9:11 | T3 | Unification.cs:1:11:1:12 | I1 |
| Unification.cs:9:10:9:11 | T3 | Unification.cs:6:7:6:8 | C0 |
| Unification.cs:9:10:9:11 | T3 | Unification.cs:7:7:7:12 | C1<C0> |
@@ -97,7 +96,6 @@ constrainedTypeParameterSubsumes
| Unification.cs:12:25:12:27 | T6d | Unification.cs:30:12:30:24 | (string, int) |
| Unification.cs:12:25:12:27 | T6d | Unification.cs:31:12:31:23 | (string, T9) |
| Unification.cs:12:25:12:27 | T6d | Unification.cs:32:12:32:19 | (T8, T9) |
| Unification.cs:12:25:12:27 | T6d | Unification.cs:33:12:33:23 | (T8, T9) |
| Unification.cs:24:12:24:13 | Tm | Unification.cs:8:7:8:12 | C2<S2> |
| Unification.cs:24:12:24:13 | Tm | Unification.cs:24:12:24:13 | Tm |
constrainedTypeParameterSubsumptionImpliesUnification
@@ -110,7 +108,6 @@ constrainedTypeParameterUnifiable
| Unification.cs:8:10:8:11 | T2 | Unification.cs:30:12:30:24 | (string, int) |
| Unification.cs:8:10:8:11 | T2 | Unification.cs:31:12:31:23 | (string, T9) |
| Unification.cs:8:10:8:11 | T2 | Unification.cs:32:12:32:19 | (T8, T9) |
| Unification.cs:8:10:8:11 | T2 | Unification.cs:33:12:33:23 | (T8, T9) |
| Unification.cs:9:10:9:11 | T3 | Unification.cs:1:11:1:12 | I1 |
| Unification.cs:9:10:9:11 | T3 | Unification.cs:6:7:6:8 | C0 |
| Unification.cs:9:10:9:11 | T3 | Unification.cs:7:7:7:12 | C1<C0> |
@@ -208,7 +205,6 @@ constrainedTypeParameterUnifiable
| Unification.cs:12:25:12:27 | T6d | Unification.cs:30:12:30:24 | (string, int) |
| Unification.cs:12:25:12:27 | T6d | Unification.cs:31:12:31:23 | (string, T9) |
| Unification.cs:12:25:12:27 | T6d | Unification.cs:32:12:32:19 | (T8, T9) |
| Unification.cs:12:25:12:27 | T6d | Unification.cs:33:12:33:23 | (T8, T9) |
| Unification.cs:24:12:24:13 | Tm | Unification.cs:8:7:8:12 | C2<S2> |
| Unification.cs:24:12:24:13 | Tm | Unification.cs:8:7:8:12 | C2<T2> |
| Unification.cs:24:12:24:13 | Tm | Unification.cs:24:12:24:13 | Tm |
@@ -284,12 +280,6 @@ subsumes
| Unification.cs:32:12:32:19 | (T8, T9) | Unification.cs:30:12:30:24 | (string, int) |
| Unification.cs:32:12:32:19 | (T8, T9) | Unification.cs:31:12:31:23 | (string, T9) |
| Unification.cs:32:12:32:19 | (T8, T9) | Unification.cs:32:12:32:19 | (T8, T9) |
| Unification.cs:32:12:32:19 | (T8, T9) | Unification.cs:33:12:33:23 | (T8, T9) |
| Unification.cs:33:12:33:23 | (T8, T9) | Unification.cs:29:12:29:20 | (T8, int) |
| Unification.cs:33:12:33:23 | (T8, T9) | Unification.cs:30:12:30:24 | (string, int) |
| Unification.cs:33:12:33:23 | (T8, T9) | Unification.cs:31:12:31:23 | (string, T9) |
| Unification.cs:33:12:33:23 | (T8, T9) | Unification.cs:32:12:32:19 | (T8, T9) |
| Unification.cs:33:12:33:23 | (T8, T9) | Unification.cs:33:12:33:23 | (T8, T9) |
| Unification.cs:36:7:36:17 | Nested<Int32> | Unification.cs:36:7:36:17 | Nested<Int32> |
| Unification.cs:36:7:36:17 | Nested<String> | Unification.cs:36:7:36:17 | Nested<String> |
| Unification.cs:36:7:36:17 | Nested<T10> | Unification.cs:36:7:36:17 | Nested<Int32> |
@@ -352,14 +342,11 @@ unifiable
| Unification.cs:12:7:12:28 | C6<C2<S2>, Tm, C3<Tm>, S2> | Unification.cs:12:7:12:28 | C6<T6a, T6b, T6c, T6d> |
| Unification.cs:29:12:29:20 | (T8, int) | Unification.cs:31:12:31:23 | (string, T9) |
| Unification.cs:29:12:29:20 | (T8, int) | Unification.cs:32:12:32:19 | (T8, T9) |
| Unification.cs:29:12:29:20 | (T8, int) | Unification.cs:33:12:33:23 | (T8, T9) |
| Unification.cs:30:12:30:24 | (string, int) | Unification.cs:29:12:29:20 | (T8, int) |
| Unification.cs:30:12:30:24 | (string, int) | Unification.cs:31:12:31:23 | (string, T9) |
| Unification.cs:30:12:30:24 | (string, int) | Unification.cs:32:12:32:19 | (T8, T9) |
| Unification.cs:30:12:30:24 | (string, int) | Unification.cs:33:12:33:23 | (T8, T9) |
| Unification.cs:31:12:31:23 | (string, T9) | Unification.cs:29:12:29:20 | (T8, int) |
| Unification.cs:31:12:31:23 | (string, T9) | Unification.cs:32:12:32:19 | (T8, T9) |
| Unification.cs:31:12:31:23 | (string, T9) | Unification.cs:33:12:33:23 | (T8, T9) |
| Unification.cs:36:7:36:17 | Nested<Int32> | Unification.cs:36:7:36:17 | Nested<T10> |
| Unification.cs:36:7:36:17 | Nested<String> | Unification.cs:36:7:36:17 | Nested<T10> |
| Unification.cs:38:11:38:22 | Nested<Int32>.NestedA<String> | Unification.cs:38:11:38:22 | Nested<>.NestedA<T11> |