mirror of
https://github.com/github/codeql.git
synced 2026-04-24 08:15:14 +02:00
Merge pull request #15328 from michaelnebel/csharp/inlinearrays
C# 12: Inline array support.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,9 @@
|
||||
class Type extends @type {
|
||||
string toString() { none() }
|
||||
}
|
||||
|
||||
from Type t, int k, int kind, string name
|
||||
where
|
||||
types(t, k, name) and
|
||||
if k = 34 then kind = 15 else kind = k
|
||||
select t, kind, name
|
||||
@@ -0,0 +1,3 @@
|
||||
description: Remove support for inline arrays.
|
||||
compatibility: backwards
|
||||
types.rel: run types.qlo
|
||||
@@ -43,6 +43,9 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
|
||||
public sealed override Microsoft.CodeAnalysis.Location? ReportingLocation => base.ReportingLocation;
|
||||
|
||||
private static bool IsArray(ITypeSymbol symbol) =>
|
||||
symbol.TypeKind == Microsoft.CodeAnalysis.TypeKind.Array || symbol.IsInlineArray();
|
||||
|
||||
private static ExprKind GetKind(Context cx, ExpressionSyntax qualifier)
|
||||
{
|
||||
var qualifierType = cx.GetType(qualifier);
|
||||
@@ -59,7 +62,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
|
||||
return IsDynamic(cx, qualifier)
|
||||
? ExprKind.DYNAMIC_ELEMENT_ACCESS
|
||||
: qualifierType.Symbol.TypeKind == Microsoft.CodeAnalysis.TypeKind.Array
|
||||
: IsArray(qualifierType.Symbol)
|
||||
? ExprKind.ARRAY_ACCESS
|
||||
: ExprKind.INDEXER_ACCESS;
|
||||
}
|
||||
|
||||
@@ -52,9 +52,15 @@ namespace Semmle.Extraction.CSharp.Entities
|
||||
{
|
||||
case TypeKind.Class: return Kinds.TypeKind.CLASS;
|
||||
case TypeKind.Struct:
|
||||
return ((INamedTypeSymbol)Symbol).IsTupleType && !constructUnderlyingTupleType
|
||||
? Kinds.TypeKind.TUPLE
|
||||
: Kinds.TypeKind.STRUCT;
|
||||
{
|
||||
if (((INamedTypeSymbol)Symbol).IsTupleType && !constructUnderlyingTupleType)
|
||||
{
|
||||
return Kinds.TypeKind.TUPLE;
|
||||
}
|
||||
return Symbol.IsInlineArray()
|
||||
? Kinds.TypeKind.INLINE_ARRAY
|
||||
: Kinds.TypeKind.STRUCT;
|
||||
}
|
||||
case TypeKind.Interface: return Kinds.TypeKind.INTERFACE;
|
||||
case TypeKind.Array: return Kinds.TypeKind.ARRAY;
|
||||
case TypeKind.Enum: return Kinds.TypeKind.ENUM;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
namespace Semmle.Extraction.Kinds // lgtm[cs/similar-file]
|
||||
namespace Semmle.Extraction.Kinds
|
||||
{
|
||||
/// <summary>
|
||||
/// This enum has been auto-generated from the C# DB scheme - do not edit.
|
||||
/// Auto-generate command: `genkindenum.pl type`
|
||||
/// </summary>
|
||||
public enum TypeKind
|
||||
{
|
||||
@@ -35,6 +36,7 @@ namespace Semmle.Extraction.Kinds // lgtm[cs/similar-file]
|
||||
ARGLIST = 30,
|
||||
UNKNOWN = 31,
|
||||
TUPLE = 32,
|
||||
FUNCTION_POINTER = 33
|
||||
FUNCTION_POINTER = 33,
|
||||
INLINE_ARRAY = 34,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -524,6 +524,17 @@ namespace Semmle.Extraction.CSharp
|
||||
public static bool IsUnboundReadOnlySpan(this ITypeSymbol type) =>
|
||||
type.ToString() == "System.ReadOnlySpan<T>";
|
||||
|
||||
public static bool IsInlineArray(this ITypeSymbol type)
|
||||
{
|
||||
var attributes = type.GetAttributes();
|
||||
var isInline = attributes.Any(attribute =>
|
||||
attribute.AttributeClass is INamedTypeSymbol nt &&
|
||||
nt.Name == "InlineArrayAttribute" &&
|
||||
nt.ContainingNamespace.ToString() == "System.Runtime.CompilerServices"
|
||||
);
|
||||
return isInline;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Holds if this type is of the form <code>System.ReadOnlySpan<byte></code>.
|
||||
/// </summary>
|
||||
|
||||
4
csharp/ql/lib/change-notes/2024-01-18-inline-arrays.md
Normal file
4
csharp/ql/lib/change-notes/2024-01-18-inline-arrays.md
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* C# 12: Add extractor support and QL library support for inline arrays.
|
||||
@@ -11,6 +11,7 @@ private import dotnet
|
||||
private import semmle.code.csharp.metrics.Coupling
|
||||
private import TypeRef
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.frameworks.system.runtime.CompilerServices
|
||||
|
||||
/**
|
||||
* A type.
|
||||
@@ -1008,6 +1009,58 @@ class NullableType extends ValueType, ConstructedType, @nullable_type {
|
||||
override string getAPrimaryQlClass() { result = "NullableType" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An inline array type, for example `MyInlineArray` in
|
||||
* ```csharp
|
||||
* [System.Runtime.CompilerServices.InlineArray(10)]
|
||||
* public struct MyInlineArray
|
||||
* {
|
||||
* private int _elements0;
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
class InlineArrayType extends ValueType, @inline_array_type {
|
||||
private SystemRuntimeCompilerServicesInlineArrayAttribute inline_attribute;
|
||||
private Field element_type_field;
|
||||
|
||||
InlineArrayType() {
|
||||
inline_attribute = this.(Attributable).getAnAttribute() and
|
||||
element_type_field = this.getAField() and
|
||||
not element_type_field.isStatic() and
|
||||
not element_type_field.isConst()
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the element type of this inline array.
|
||||
*/
|
||||
Type getElementType() { result = element_type_field.getType() }
|
||||
|
||||
/**
|
||||
* Gets the rank of this inline array (inline arrays always have rank 1).
|
||||
*/
|
||||
int getRank() { result = 1 }
|
||||
|
||||
/**
|
||||
* Gets the length of this inline array.
|
||||
*/
|
||||
int getLength() { result = inline_attribute.getLength() }
|
||||
|
||||
/**
|
||||
* Gets the dimension of this inline array.
|
||||
*/
|
||||
int getDimension() {
|
||||
exists(Type elem | elem = this.getElementType() |
|
||||
result = elem.(InlineArrayType).getDimension() + 1
|
||||
or
|
||||
result = elem.(ArrayType).getDimension() + 1
|
||||
or
|
||||
not elem instanceof ArrayType and not elem instanceof InlineArrayType and result = 1
|
||||
)
|
||||
}
|
||||
|
||||
override string getAPrimaryQlClass() { result = "InlineArrayType" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An array type, for example `int[]`.
|
||||
*/
|
||||
|
||||
@@ -70,3 +70,15 @@ class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiter
|
||||
/** Gets the field that stores the underlying task. */
|
||||
Field getUnderlyingTaskField() { result = this.getAField() and result.hasName("m_task") }
|
||||
}
|
||||
|
||||
/** An attribute of type `System.Runtime.CompilerServices.InlineArrayAttribute`. */
|
||||
class SystemRuntimeCompilerServicesInlineArrayAttribute extends Attribute {
|
||||
SystemRuntimeCompilerServicesInlineArrayAttribute() {
|
||||
this.getType().hasFullyQualifiedName("System.Runtime.CompilerServices", "InlineArrayAttribute")
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the length of the inline array.
|
||||
*/
|
||||
int getLength() { result = this.getConstructorArgument(0).getValue().toInt() }
|
||||
}
|
||||
|
||||
@@ -448,6 +448,7 @@ case @type.kind of
|
||||
| 31 = @unknown_type
|
||||
| 32 = @tuple_type
|
||||
| 33 = @function_pointer_type
|
||||
| 34 = @inline_array_type
|
||||
;
|
||||
|
||||
@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type;
|
||||
@@ -456,7 +457,7 @@ case @type.kind of
|
||||
@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type;
|
||||
@floating_point_type = @float_type | @double_type;
|
||||
@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type
|
||||
| @uint_ptr_type | @tuple_type | @void_type;
|
||||
| @uint_ptr_type | @tuple_type | @void_type | @inline_array_type;
|
||||
@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type
|
||||
| @dynamic_type;
|
||||
@value_or_ref_type = @value_type | @ref_type;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Add support for inline arrays.
|
||||
compatibility: backwards
|
||||
@@ -8,6 +8,32 @@ public class CollectionFlow
|
||||
|
||||
public A[] As;
|
||||
|
||||
public static void Sink<T>(T t) { }
|
||||
|
||||
public static void SinkElem<T>(T[] ts) => Sink(ts[0]);
|
||||
|
||||
public static void SinkListElem<T>(IList<T> list) => Sink(list[0]);
|
||||
|
||||
public static void SinkDictValue<T>(IDictionary<int, T> dict) => Sink(dict[0]);
|
||||
|
||||
public static void SinkDictKey<T>(IDictionary<T, int> dict) => Sink(dict.Keys.First());
|
||||
|
||||
public static T First<T>(T[] ts) => ts[0];
|
||||
|
||||
public static T ListFirst<T>(IList<T> list) => list[0];
|
||||
|
||||
public static T DictIndexZero<T>(IDictionary<int, T> dict) => dict[0];
|
||||
|
||||
public static T DictFirstValue<T>(IDictionary<int, T> dict) => dict.First().Value;
|
||||
|
||||
public static T DictValuesFirst<T>(IDictionary<int, T> dict) => dict.Values.First();
|
||||
|
||||
public static T DictKeysFirst<T>(IDictionary<T, int> dict) => dict.Keys.First();
|
||||
|
||||
public static T DictFirstKey<T>(IDictionary<T, int> dict) => dict.First().Key;
|
||||
|
||||
public static void SinkParams<T>(params T[] args) => Sink(args[0]);
|
||||
|
||||
public void ArrayInitializerFlow()
|
||||
{
|
||||
var a = new A();
|
||||
@@ -368,29 +394,24 @@ public class CollectionFlow
|
||||
Sink(ListFirst(list)); // no flow
|
||||
}
|
||||
|
||||
public static void Sink<T>(T t) { }
|
||||
[System.Runtime.CompilerServices.InlineArray(10)]
|
||||
struct MyInlineArray
|
||||
{
|
||||
private A myInlineArrayElements;
|
||||
}
|
||||
|
||||
public static void SinkElem<T>(T[] ts) => Sink(ts[0]);
|
||||
public void InlineArraySetterFlow()
|
||||
{
|
||||
var a = new A();
|
||||
var array = new MyInlineArray();
|
||||
array[0] = a;
|
||||
Sink(array[0]); // flow
|
||||
}
|
||||
|
||||
public static void SinkListElem<T>(IList<T> list) => Sink(list[0]);
|
||||
|
||||
public static void SinkDictValue<T>(IDictionary<int, T> dict) => Sink(dict[0]);
|
||||
|
||||
public static void SinkDictKey<T>(IDictionary<T, int> dict) => Sink(dict.Keys.First());
|
||||
|
||||
public static T First<T>(T[] ts) => ts[0];
|
||||
|
||||
public static T ListFirst<T>(IList<T> list) => list[0];
|
||||
|
||||
public static T DictIndexZero<T>(IDictionary<int, T> dict) => dict[0];
|
||||
|
||||
public static T DictFirstValue<T>(IDictionary<int, T> dict) => dict.First().Value;
|
||||
|
||||
public static T DictValuesFirst<T>(IDictionary<int, T> dict) => dict.Values.First();
|
||||
|
||||
public static T DictKeysFirst<T>(IDictionary<T, int> dict) => dict.Keys.First();
|
||||
|
||||
public static T DictFirstKey<T>(IDictionary<T, int> dict) => dict.First().Key;
|
||||
|
||||
public static void SinkParams<T>(params T[] args) => Sink(args[0]);
|
||||
public void InlineArraySetterNoFlow(A other)
|
||||
{
|
||||
var array = new MyInlineArray();
|
||||
array[0] = other;
|
||||
Sink(array[0]); // no flow
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -248,4 +248,24 @@ namespace My.Qltest
|
||||
|
||||
static void Sink(object o) { }
|
||||
}
|
||||
|
||||
[System.Runtime.CompilerServices.InlineArray(10)]
|
||||
public struct MyInlineArray
|
||||
{
|
||||
private object myInlineArrayElements;
|
||||
}
|
||||
|
||||
public class I
|
||||
{
|
||||
void M1(MyInlineArray a)
|
||||
{
|
||||
a[0] = new object();
|
||||
var b = GetFirst(a);
|
||||
Sink(b);
|
||||
}
|
||||
|
||||
object GetFirst(MyInlineArray arr) => throw null;
|
||||
|
||||
static void Sink(object o) { }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,6 +68,10 @@ edges
|
||||
| ExternalFlow.cs:244:21:244:28 | object creation of type HC : HC | ExternalFlow.cs:245:21:245:21 | access to local variable h : HC |
|
||||
| ExternalFlow.cs:245:21:245:21 | access to local variable h : HC | ExternalFlow.cs:245:21:245:39 | call to method ExtensionMethod : HC |
|
||||
| ExternalFlow.cs:245:21:245:39 | call to method ExtensionMethod : HC | ExternalFlow.cs:246:18:246:18 | access to local variable o |
|
||||
| ExternalFlow.cs:262:13:262:13 | [post] access to parameter a : MyInlineArray [element] : Object | ExternalFlow.cs:263:30:263:30 | access to parameter a : MyInlineArray [element] : Object |
|
||||
| ExternalFlow.cs:262:20:262:31 | object creation of type Object : Object | ExternalFlow.cs:262:13:262:13 | [post] access to parameter a : MyInlineArray [element] : Object |
|
||||
| ExternalFlow.cs:263:21:263:31 | call to method GetFirst : Object | ExternalFlow.cs:264:18:264:18 | access to local variable b |
|
||||
| ExternalFlow.cs:263:30:263:30 | access to parameter a : MyInlineArray [element] : Object | ExternalFlow.cs:263:21:263:31 | call to method GetFirst : Object |
|
||||
nodes
|
||||
| ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | semmle.label | object creation of type Object : Object |
|
||||
| ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | semmle.label | call to method StepArgRes |
|
||||
@@ -157,6 +161,11 @@ nodes
|
||||
| ExternalFlow.cs:245:21:245:21 | access to local variable h : HC | semmle.label | access to local variable h : HC |
|
||||
| ExternalFlow.cs:245:21:245:39 | call to method ExtensionMethod : HC | semmle.label | call to method ExtensionMethod : HC |
|
||||
| ExternalFlow.cs:246:18:246:18 | access to local variable o | semmle.label | access to local variable o |
|
||||
| ExternalFlow.cs:262:13:262:13 | [post] access to parameter a : MyInlineArray [element] : Object | semmle.label | [post] access to parameter a : MyInlineArray [element] : Object |
|
||||
| ExternalFlow.cs:262:20:262:31 | object creation of type Object : Object | semmle.label | object creation of type Object : Object |
|
||||
| ExternalFlow.cs:263:21:263:31 | call to method GetFirst : Object | semmle.label | call to method GetFirst : Object |
|
||||
| ExternalFlow.cs:263:30:263:30 | access to parameter a : MyInlineArray [element] : Object | semmle.label | access to parameter a : MyInlineArray [element] : Object |
|
||||
| ExternalFlow.cs:264:18:264:18 | access to local variable b | semmle.label | access to local variable b |
|
||||
subpaths
|
||||
#select
|
||||
| ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | $@ | ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | object creation of type Object : Object |
|
||||
@@ -182,3 +191,4 @@ subpaths
|
||||
| ExternalFlow.cs:206:18:206:40 | call to method MixedFlowArgs | ExternalFlow.cs:205:22:205:33 | object creation of type Object : Object | ExternalFlow.cs:206:18:206:40 | call to method MixedFlowArgs | $@ | ExternalFlow.cs:205:22:205:33 | object creation of type Object : Object | object creation of type Object : Object |
|
||||
| ExternalFlow.cs:212:18:212:54 | call to method GeneratedFlowWithGeneratedNeutral | ExternalFlow.cs:211:22:211:33 | object creation of type Object : Object | ExternalFlow.cs:212:18:212:54 | call to method GeneratedFlowWithGeneratedNeutral | $@ | ExternalFlow.cs:211:22:211:33 | object creation of type Object : Object | object creation of type Object : Object |
|
||||
| ExternalFlow.cs:246:18:246:18 | access to local variable o | ExternalFlow.cs:244:21:244:28 | object creation of type HC : HC | ExternalFlow.cs:246:18:246:18 | access to local variable o | $@ | ExternalFlow.cs:244:21:244:28 | object creation of type HC : HC | object creation of type HC : HC |
|
||||
| ExternalFlow.cs:264:18:264:18 | access to local variable b | ExternalFlow.cs:262:20:262:31 | object creation of type Object : Object | ExternalFlow.cs:264:18:264:18 | access to local variable b | $@ | ExternalFlow.cs:262:20:262:31 | object creation of type Object : Object | object creation of type Object : Object |
|
||||
|
||||
@@ -32,6 +32,7 @@ extensions:
|
||||
- ["My.Qltest", "G", false, "GeneratedFlowWithGeneratedNeutral", "(System.Object)", "", "Argument[0]", "ReturnValue", "value", "df-generated"]
|
||||
- ["My.Qltest", "G", false, "GeneratedFlowWithManualNeutral", "(System.Object)", "", "Argument[0]", "ReturnValue", "value", "df-generated"]
|
||||
- ["My.Qltest", "HE", false, "ExtensionMethod", "(My.Qltest.HI)", "", "Argument[0]", "ReturnValue", "value", "manual"]
|
||||
- ["My.Qltest", "I", false, "GetFirst", "(My.Qltest.MyInlineArray)", "", "Argument[0].Element", "ReturnValue", "value", "manual"]
|
||||
- addsTo:
|
||||
pack: codeql/csharp-all
|
||||
extensible: neutralModel
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:249:16:249:26 | LoginDialog | expressions.cs:252:13:252:61 | ... += ... |
|
||||
| expressions.cs:250:16:250:26 | LoginDialog | expressions.cs:253:13:253:61 | ... += ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:455:33:455:66 | delegate(...) { ... } |
|
||||
| expressions.cs:456:33:456:66 | delegate(...) { ... } |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:455:33:455:66 | delegate(...) { ... } | expressions.cs:455:47:455:47 | x |
|
||||
| expressions.cs:456:33:456:66 | delegate(...) { ... } | expressions.cs:456:47:456:47 | x |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:455:33:455:66 | delegate(...) { ... } |
|
||||
| expressions.cs:456:33:456:66 | delegate(...) { ... } |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:457:28:457:53 | delegate(...) { ... } | expressions.cs:457:28:457:53 | delegate(...) { ... } |
|
||||
| expressions.cs:458:28:458:53 | delegate(...) { ... } | expressions.cs:458:28:458:53 | delegate(...) { ... } |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:457:28:457:53 | delegate(...) { ... } | expressions.cs:457:46:457:46 | access to local variable j |
|
||||
| expressions.cs:458:28:458:53 | delegate(...) { ... } | expressions.cs:458:46:458:46 | access to local variable j |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:428:44:428:56 | object creation of type <>__AnonType1<Int32> |
|
||||
| expressions.cs:429:44:429:56 | object creation of type <>__AnonType1<Int32> |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:417:9:420:9 | object creation of type <>__AnonType0<String,String[]> | String |
|
||||
| expressions.cs:418:9:421:9 | object creation of type <>__AnonType0<String,String[]> | String |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
| expressions.cs:417:9:420:9 | object creation of type <>__AnonType0<String,String[]> | String[] |
|
||||
| expressions.cs:421:9:424:9 | object creation of type <>__AnonType0<String,String[]> | String[] |
|
||||
| expressions.cs:418:9:421:9 | object creation of type <>__AnonType0<String,String[]> | String[] |
|
||||
| expressions.cs:422:9:425:9 | object creation of type <>__AnonType0<String,String[]> | String[] |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
| expressions.cs:417:9:420:9 | object creation of type <>__AnonType0<String,String[]> | expressions.cs:421:9:424:9 | object creation of type <>__AnonType0<String,String[]> |
|
||||
| expressions.cs:421:9:424:9 | object creation of type <>__AnonType0<String,String[]> | expressions.cs:417:9:420:9 | object creation of type <>__AnonType0<String,String[]> |
|
||||
| expressions.cs:418:9:421:9 | object creation of type <>__AnonType0<String,String[]> | expressions.cs:422:9:425:9 | object creation of type <>__AnonType0<String,String[]> |
|
||||
| expressions.cs:422:9:425:9 | object creation of type <>__AnonType0<String,String[]> | expressions.cs:418:9:421:9 | object creation of type <>__AnonType0<String,String[]> |
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
| expressions.cs:79:14:79:25 | MainAccesses | expressions.cs:89:13:89:26 | access to array element |
|
||||
13
csharp/ql/test/library-tests/expressions/ArrayAccess2.ql
Normal file
13
csharp/ql/test/library-tests/expressions/ArrayAccess2.ql
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* @name Test for inline array access
|
||||
*/
|
||||
|
||||
import csharp
|
||||
|
||||
from Method m, ArrayAccess e
|
||||
where
|
||||
m.hasName("MainAccesses") and
|
||||
e.getEnclosingCallable() = m and
|
||||
e.getQualifier().(LocalVariableAccess).getTarget().getName() = "inlinearray" and
|
||||
e.getIndex(0).(IntLiteral).getValue() = "2"
|
||||
select m, e
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:409:23:409:65 | array creation of type Int32[,] | expressions.cs:409:34:409:65 | { ..., ... } |
|
||||
| expressions.cs:410:23:410:65 | array creation of type Int32[,] | expressions.cs:410:34:410:65 | { ..., ... } |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:168:27:168:44 | array creation of type Object[] | expressions.cs:168:42:168:42 | (...) ... |
|
||||
| expressions.cs:169:27:169:44 | array creation of type Object[] | expressions.cs:169:42:169:42 | (...) ... |
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
| expressions.cs:168:27:168:44 | array creation of type Object[] | expressions.cs:168:27:168:44 | 1 | true |
|
||||
| expressions.cs:409:23:409:65 | array creation of type Int32[,] | expressions.cs:409:23:409:65 | 2 | true |
|
||||
| expressions.cs:409:23:409:65 | array creation of type Int32[,] | expressions.cs:409:23:409:65 | 3 | true |
|
||||
| expressions.cs:437:24:437:66 | array creation of type Int32[,] | expressions.cs:437:24:437:66 | 2 | true |
|
||||
| expressions.cs:437:24:437:66 | array creation of type Int32[,] | expressions.cs:437:24:437:66 | 3 | true |
|
||||
| expressions.cs:438:17:438:93 | array creation of type Int32[,,] | expressions.cs:438:17:438:93 | 2 | true |
|
||||
| expressions.cs:438:17:438:93 | array creation of type Int32[,,] | expressions.cs:438:17:438:93 | 2 | true |
|
||||
| expressions.cs:438:17:438:93 | array creation of type Int32[,,] | expressions.cs:438:17:438:93 | 3 | true |
|
||||
| expressions.cs:439:17:443:13 | array creation of type Int32[,][,] | expressions.cs:439:17:443:13 | 2 | true |
|
||||
| expressions.cs:439:17:443:13 | array creation of type Int32[,][,] | expressions.cs:439:17:443:13 | 3 | true |
|
||||
| expressions.cs:441:19:441:45 | array creation of type Int32[,] | expressions.cs:441:19:441:45 | 2 | true |
|
||||
| expressions.cs:441:19:441:45 | array creation of type Int32[,] | expressions.cs:441:19:441:45 | 2 | true |
|
||||
| expressions.cs:441:48:441:82 | array creation of type Int32[,] | expressions.cs:441:48:441:82 | 2 | true |
|
||||
| expressions.cs:441:48:441:82 | array creation of type Int32[,] | expressions.cs:441:48:441:82 | 3 | true |
|
||||
| expressions.cs:441:85:441:122 | array creation of type Int32[,] | expressions.cs:441:85:441:122 | 2 | true |
|
||||
| expressions.cs:441:85:441:122 | array creation of type Int32[,] | expressions.cs:441:85:441:122 | 3 | true |
|
||||
| expressions.cs:169:27:169:44 | array creation of type Object[] | expressions.cs:169:27:169:44 | 1 | true |
|
||||
| expressions.cs:410:23:410:65 | array creation of type Int32[,] | expressions.cs:410:23:410:65 | 2 | true |
|
||||
| expressions.cs:410:23:410:65 | array creation of type Int32[,] | expressions.cs:410:23:410:65 | 3 | true |
|
||||
| expressions.cs:438:24:438:66 | array creation of type Int32[,] | expressions.cs:438:24:438:66 | 2 | true |
|
||||
| expressions.cs:438:24:438:66 | array creation of type Int32[,] | expressions.cs:438:24:438:66 | 3 | true |
|
||||
| expressions.cs:439:17:439:93 | array creation of type Int32[,,] | expressions.cs:439:17:439:93 | 2 | true |
|
||||
| expressions.cs:439:17:439:93 | array creation of type Int32[,,] | expressions.cs:439:17:439:93 | 2 | true |
|
||||
| expressions.cs:439:17:439:93 | array creation of type Int32[,,] | expressions.cs:439:17:439:93 | 3 | true |
|
||||
| expressions.cs:440:17:444:13 | array creation of type Int32[,][,] | expressions.cs:440:17:444:13 | 2 | true |
|
||||
| expressions.cs:440:17:444:13 | array creation of type Int32[,][,] | expressions.cs:440:17:444:13 | 3 | true |
|
||||
| expressions.cs:442:19:442:45 | array creation of type Int32[,] | expressions.cs:442:19:442:45 | 2 | true |
|
||||
| expressions.cs:442:19:442:45 | array creation of type Int32[,] | expressions.cs:442:19:442:45 | 2 | true |
|
||||
| expressions.cs:442:48:442:82 | array creation of type Int32[,] | expressions.cs:442:48:442:82 | 2 | true |
|
||||
| expressions.cs:442:48:442:82 | array creation of type Int32[,] | expressions.cs:442:48:442:82 | 3 | true |
|
||||
| expressions.cs:442:85:442:122 | array creation of type Int32[,] | expressions.cs:442:85:442:122 | 2 | true |
|
||||
| expressions.cs:442:85:442:122 | array creation of type Int32[,] | expressions.cs:442:85:442:122 | 3 | true |
|
||||
| expressions.cs:444:17:444:123 | array creation of type Int32[,][] | expressions.cs:444:17:444:123 | 2 | true |
|
||||
| expressions.cs:444:32:444:54 | array creation of type Int32[,] | expressions.cs:444:32:444:54 | 1 | true |
|
||||
| expressions.cs:444:32:444:54 | array creation of type Int32[,] | expressions.cs:444:32:444:54 | 2 | true |
|
||||
| expressions.cs:444:57:444:121 | array creation of type Int32[,] | expressions.cs:444:57:444:121 | 3 | true |
|
||||
| expressions.cs:444:57:444:121 | array creation of type Int32[,] | expressions.cs:444:57:444:121 | 4 | true |
|
||||
| expressions.cs:443:19:443:45 | array creation of type Int32[,] | expressions.cs:443:19:443:45 | 2 | true |
|
||||
| expressions.cs:443:19:443:45 | array creation of type Int32[,] | expressions.cs:443:19:443:45 | 2 | true |
|
||||
| expressions.cs:443:48:443:82 | array creation of type Int32[,] | expressions.cs:443:48:443:82 | 2 | true |
|
||||
| expressions.cs:443:48:443:82 | array creation of type Int32[,] | expressions.cs:443:48:443:82 | 3 | true |
|
||||
| expressions.cs:443:85:443:122 | array creation of type Int32[,] | expressions.cs:443:85:443:122 | 2 | true |
|
||||
| expressions.cs:443:85:443:122 | array creation of type Int32[,] | expressions.cs:443:85:443:122 | 3 | true |
|
||||
| expressions.cs:445:17:445:123 | array creation of type Int32[,][] | expressions.cs:445:17:445:123 | 2 | true |
|
||||
| expressions.cs:445:32:445:54 | array creation of type Int32[,] | expressions.cs:445:32:445:54 | 1 | true |
|
||||
| expressions.cs:445:32:445:54 | array creation of type Int32[,] | expressions.cs:445:32:445:54 | 2 | true |
|
||||
| expressions.cs:445:57:445:121 | array creation of type Int32[,] | expressions.cs:445:57:445:121 | 3 | true |
|
||||
| expressions.cs:445:57:445:121 | array creation of type Int32[,] | expressions.cs:445:57:445:121 | 4 | true |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:410:23:410:68 | array creation of type Int32[,] | expressions.cs:410:37:410:68 | { ..., ... } |
|
||||
| expressions.cs:411:23:411:68 | array creation of type Int32[,] | expressions.cs:411:37:411:68 | { ..., ... } |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:411:27:411:40 | array creation of type Int32[][] |
|
||||
| expressions.cs:412:27:412:40 | array creation of type Int32[][] |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:412:26:412:40 | array creation of type Int32[,] |
|
||||
| expressions.cs:413:26:413:40 | array creation of type Int32[,] |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:413:23:413:48 | array creation of type Int32[] |
|
||||
| expressions.cs:414:23:414:48 | array creation of type Int32[] |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:414:23:414:46 | array creation of type Double[] |
|
||||
| expressions.cs:415:23:415:46 | array creation of type Double[] |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:415:23:415:68 | array creation of type String[,] |
|
||||
| expressions.cs:416:23:416:68 | array creation of type String[,] |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:416:29:425:7 | array creation of type <>__AnonType0<String,String[]>[] |
|
||||
| expressions.cs:417:29:426:7 | array creation of type <>__AnonType0<String,String[]>[] |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:112:28:123:9 | array creation of type Type[] |
|
||||
| expressions.cs:113:28:124:9 | array creation of type Type[] |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:91:14:91:25 | MainIsAsCast | expressions.cs:95:27:95:36 | ... as ... |
|
||||
| expressions.cs:92:14:92:25 | MainIsAsCast | expressions.cs:96:27:96:36 | ... as ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:17:138:20 | base access |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:17:139:20 | base access |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:35:138:38 | this access | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:41:138:41 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:44:138:44 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:47:138:47 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:50:138:50 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:53:138:54 | "" | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:35:139:38 | this access | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:41:139:41 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:44:139:44 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:47:139:47 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:50:139:50 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:53:139:54 | "" | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:35:138:38 | this access | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:41:138:41 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:44:138:44 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:47:138:47 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:50:138:50 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:138:53:138:54 | "" | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:35:139:38 | this access | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:41:139:41 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:44:139:44 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:47:139:47 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:50:139:50 | (...) ... | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:139:53:139:54 | "" | expressions.cs:79:14:79:25 | MainAccesses |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:143:14:143:29 | MainLocalVarDecl | expressions.cs:148:31:148:39 | ... + ... | WriteLine |
|
||||
| expressions.cs:144:14:144:29 | MainLocalVarDecl | expressions.cs:149:31:149:39 | ... + ... | WriteLine |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:91:14:91:25 | MainIsAsCast | expressions.cs:96:27:96:34 | (...) ... |
|
||||
| expressions.cs:92:14:92:25 | MainIsAsCast | expressions.cs:97:27:97:34 | (...) ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:133:13:133:18 | Nested | expressions.cs:133:29:133:32 | call to constructor Class |
|
||||
| expressions.cs:134:13:134:18 | Nested | expressions.cs:134:29:134:32 | call to constructor Class |
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
| expressions.cs:56:9:56:13 | Class | expressions.cs:56:19:56:22 | call to constructor Class | expressions.cs:58:19:58:23 | Class |
|
||||
| expressions.cs:58:19:58:23 | Class | expressions.cs:58:19:58:23 | call to constructor Object | file://:0:0:0:0 | Object |
|
||||
| expressions.cs:132:13:132:18 | Nested | expressions.cs:132:13:132:18 | call to constructor Class | expressions.cs:56:9:56:13 | Class |
|
||||
| expressions.cs:133:13:133:18 | Nested | expressions.cs:133:29:133:32 | call to constructor Class | expressions.cs:58:19:58:23 | Class |
|
||||
| expressions.cs:249:16:249:26 | LoginDialog | expressions.cs:249:16:249:26 | call to constructor Object | file://:0:0:0:0 | Object |
|
||||
| expressions.cs:270:16:270:24 | IntVector | expressions.cs:270:16:270:24 | call to constructor Object | file://:0:0:0:0 | Object |
|
||||
| expressions.cs:310:16:310:20 | Digit | expressions.cs:310:16:310:20 | call to constructor ValueType | file://:0:0:0:0 | ValueType |
|
||||
| expressions.cs:480:20:480:22 | Num | expressions.cs:480:20:480:22 | call to constructor Object | file://:0:0:0:0 | Object |
|
||||
| expressions.cs:133:13:133:18 | Nested | expressions.cs:133:13:133:18 | call to constructor Class | expressions.cs:56:9:56:13 | Class |
|
||||
| expressions.cs:134:13:134:18 | Nested | expressions.cs:134:29:134:32 | call to constructor Class | expressions.cs:58:19:58:23 | Class |
|
||||
| expressions.cs:250:16:250:26 | LoginDialog | expressions.cs:250:16:250:26 | call to constructor Object | file://:0:0:0:0 | Object |
|
||||
| expressions.cs:271:16:271:24 | IntVector | expressions.cs:271:16:271:24 | call to constructor Object | file://:0:0:0:0 | Object |
|
||||
| expressions.cs:311:16:311:20 | Digit | expressions.cs:311:16:311:20 | call to constructor ValueType | file://:0:0:0:0 | ValueType |
|
||||
| expressions.cs:481:20:481:22 | Num | expressions.cs:481:20:481:22 | call to constructor Object | file://:0:0:0:0 | Object |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:91:14:91:25 | MainIsAsCast | expressions.cs:99:21:99:32 | default(...) |
|
||||
| expressions.cs:92:14:92:25 | MainIsAsCast | expressions.cs:100:21:100:32 | default(...) |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:110:32:110:41 | PrintTypes | expressions.cs:124:23:124:32 | default(...) | expressions.cs:107:17:107:17 | T |
|
||||
| expressions.cs:111:32:111:41 | PrintTypes | expressions.cs:125:23:125:32 | default(...) | expressions.cs:108:17:108:17 | T |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:171:21:171:49 | MainDelegateAndMethodAccesses | expressions.cs:185:13:185:20 | delegate call | expressions.cs:185:13:185:15 | access to local variable cd1 |
|
||||
| expressions.cs:172:21:172:49 | MainDelegateAndMethodAccesses | expressions.cs:186:13:186:20 | delegate call | expressions.cs:186:13:186:15 | access to local variable cd1 |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:171:21:171:49 | MainDelegateAndMethodAccesses | expressions.cs:187:13:187:23 | delegate call | expressions.cs:187:13:187:15 | access to local variable cd7 |
|
||||
| expressions.cs:172:21:172:49 | MainDelegateAndMethodAccesses | expressions.cs:188:13:188:23 | delegate call | expressions.cs:188:13:188:15 | access to local variable cd7 |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:171:21:171:49 | MainDelegateAndMethodAccesses | expressions.cs:187:13:187:23 | delegate call | expressions.cs:187:13:187:15 | access to local variable cd7 |
|
||||
| expressions.cs:172:21:172:49 | MainDelegateAndMethodAccesses | expressions.cs:188:13:188:23 | delegate call | expressions.cs:188:13:188:15 | access to local variable cd7 |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:171:21:171:49 | MainDelegateAndMethodAccesses | expressions.cs:183:21:183:30 | delegate creation of type D |
|
||||
| expressions.cs:172:21:172:49 | MainDelegateAndMethodAccesses | expressions.cs:184:21:184:30 | delegate creation of type D |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:171:21:171:49 | MainDelegateAndMethodAccesses | expressions.cs:173:21:173:31 | delegate creation of type D |
|
||||
| expressions.cs:172:21:172:49 | MainDelegateAndMethodAccesses | expressions.cs:174:21:174:31 | delegate creation of type D |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:171:21:171:49 | MainDelegateAndMethodAccesses | expressions.cs:182:21:182:31 | delegate creation of type D |
|
||||
| expressions.cs:172:21:172:49 | MainDelegateAndMethodAccesses | expressions.cs:183:21:183:31 | delegate creation of type D |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:171:21:171:49 | MainDelegateAndMethodAccesses | expressions.cs:174:21:174:24 | delegate creation of type D |
|
||||
| expressions.cs:172:21:172:49 | MainDelegateAndMethodAccesses | expressions.cs:175:21:175:24 | delegate creation of type D |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:171:21:171:49 | MainDelegateAndMethodAccesses | expressions.cs:197:19:197:38 | delegate creation of type D |
|
||||
| expressions.cs:172:21:172:49 | MainDelegateAndMethodAccesses | expressions.cs:198:19:198:38 | delegate creation of type D |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:171:21:171:49 | MainDelegateAndMethodAccesses | expressions.cs:198:19:198:31 | delegate creation of type D |
|
||||
| expressions.cs:172:21:172:49 | MainDelegateAndMethodAccesses | expressions.cs:199:19:199:31 | delegate creation of type D |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:231:24:231:30 | OnClick | expressions.cs:233:17:233:21 | access to event Click |
|
||||
| expressions.cs:232:24:232:30 | OnClick | expressions.cs:234:17:234:21 | access to event Click |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:237:21:237:25 | Reset | expressions.cs:239:13:239:17 | access to event Click |
|
||||
| expressions.cs:238:21:238:25 | Reset | expressions.cs:240:13:240:17 | access to event Click |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:231:24:231:30 | OnClick | expressions.cs:234:17:234:30 | delegate call | expressions.cs:234:17:234:21 | access to event Click |
|
||||
| expressions.cs:232:24:232:30 | OnClick | expressions.cs:235:17:235:30 | delegate call | expressions.cs:235:17:235:21 | access to event Click |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:160:14:160:24 | MainChecked | expressions.cs:162:24:162:36 | checked (...) |
|
||||
| expressions.cs:161:14:161:24 | MainChecked | expressions.cs:163:24:163:36 | checked (...) |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:160:14:160:24 | MainChecked | expressions.cs:163:21:163:37 | unchecked (...) |
|
||||
| expressions.cs:161:14:161:24 | MainChecked | expressions.cs:164:21:164:37 | unchecked (...) |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:135:18:135:30 | OtherAccesses | expressions.cs:137:17:137:22 | access to field f |
|
||||
| expressions.cs:136:18:136:30 | OtherAccesses | expressions.cs:138:17:138:22 | access to field f |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:91:14:91:25 | MainIsAsCast | expressions.cs:93:17:93:26 | ... is ... |
|
||||
| expressions.cs:92:14:92:25 | MainIsAsCast | expressions.cs:94:17:94:26 | ... is ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:449:36:449:53 | (...) => ... |
|
||||
| expressions.cs:450:36:450:53 | (...) => ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:450:38:450:59 | (...) => ... |
|
||||
| expressions.cs:451:38:451:59 | (...) => ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:451:33:451:48 | (...) => ... |
|
||||
| expressions.cs:452:33:452:48 | (...) => ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:452:36:452:64 | (...) => ... |
|
||||
| expressions.cs:453:36:453:64 | (...) => ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:453:20:453:34 | (...) => ... |
|
||||
| expressions.cs:454:20:454:34 | (...) => ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:454:23:454:47 | (...) => ... |
|
||||
| expressions.cs:455:23:455:47 | (...) => ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:153:14:153:31 | MainLocalConstDecl | expressions.cs:157:31:157:32 | access to local variable pi |
|
||||
| expressions.cs:154:14:154:31 | MainLocalConstDecl | expressions.cs:158:31:158:32 | access to local variable pi |
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
| MethodAccess.cs:8:20:8:21 | access to local function M1 |
|
||||
| expressions.cs:197:25:197:37 | access to local function LocalFunction |
|
||||
| expressions.cs:198:19:198:31 | access to local function LocalFunction |
|
||||
| expressions.cs:198:25:198:37 | access to local function LocalFunction |
|
||||
| expressions.cs:199:19:199:31 | access to local function LocalFunction |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:143:14:143:29 | MainLocalVarDecl | expressions.cs:147:13:147:13 | access to local variable a |
|
||||
| expressions.cs:144:14:144:29 | MainLocalVarDecl | expressions.cs:148:13:148:13 | access to local variable a |
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
| MethodAccess.cs:10:13:10:19 | access to method M2 |
|
||||
| MethodAccess.cs:11:13:11:14 | access to method M3 |
|
||||
| MethodAccess.cs:12:13:12:27 | access to method M3 |
|
||||
| expressions.cs:173:27:173:30 | access to method M1 |
|
||||
| expressions.cs:174:21:174:24 | access to method M2 |
|
||||
| expressions.cs:182:27:182:30 | access to method M3 |
|
||||
| expressions.cs:189:52:189:54 | access to method F |
|
||||
| expressions.cs:190:36:190:38 | access to method G |
|
||||
| expressions.cs:252:48:252:60 | access to method OkButtonClick |
|
||||
| expressions.cs:254:52:254:68 | access to method CancelButtonClick |
|
||||
| expressions.cs:174:27:174:30 | access to method M1 |
|
||||
| expressions.cs:175:21:175:24 | access to method M2 |
|
||||
| expressions.cs:183:27:183:30 | access to method M3 |
|
||||
| expressions.cs:190:52:190:54 | access to method F |
|
||||
| expressions.cs:191:36:191:38 | access to method G |
|
||||
| expressions.cs:253:48:253:60 | access to method OkButtonClick |
|
||||
| expressions.cs:255:52:255:68 | access to method CancelButtonClick |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
| expressions.cs:249:16:249:26 | LoginDialog | expressions.cs:251:24:251:35 | object creation of type Button | expressions.cs:226:18:226:23 | Button |
|
||||
| expressions.cs:249:16:249:26 | LoginDialog | expressions.cs:253:28:253:39 | object creation of type Button | expressions.cs:226:18:226:23 | Button |
|
||||
| expressions.cs:250:16:250:26 | LoginDialog | expressions.cs:252:24:252:35 | object creation of type Button | expressions.cs:227:18:227:23 | Button |
|
||||
| expressions.cs:250:16:250:26 | LoginDialog | expressions.cs:254:28:254:39 | object creation of type Button | expressions.cs:227:18:227:23 | Button |
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
| expressions.cs:427:41:427:49 | call to method Add |
|
||||
| expressions.cs:427:43:427:43 | access to local variable i |
|
||||
| expressions.cs:427:43:427:47 | ... = ... |
|
||||
| expressions.cs:427:47:427:47 | 2 |
|
||||
| expressions.cs:428:41:428:49 | call to method Add |
|
||||
| expressions.cs:428:43:428:43 | access to local variable i |
|
||||
| expressions.cs:428:43:428:47 | ... = ... |
|
||||
| expressions.cs:428:47:428:47 | 2 |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:428:42:428:58 | { ..., ... } | expressions.cs:428:44:428:56 | object creation of type <>__AnonType1<Int32> |
|
||||
| expressions.cs:429:42:429:58 | { ..., ... } | expressions.cs:429:44:429:56 | object creation of type <>__AnonType1<Int32> |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:294:14:294:30 | MainUnaryOperator | expressions.cs:296:29:296:44 | object creation of type IntVector | expressions.cs:270:16:270:24 | IntVector |
|
||||
| expressions.cs:295:14:295:30 | MainUnaryOperator | expressions.cs:297:29:297:44 | object creation of type IntVector | expressions.cs:271:16:271:24 | IntVector |
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
| expressions.cs:385:14:385:26 | MainCreations | expressions.cs:387:23:387:48 | object creation of type Point | expressions.cs:340:18:340:22 | Point | expressions.cs:387:33:387:48 | { ..., ... } |
|
||||
| expressions.cs:385:14:385:26 | MainCreations | expressions.cs:390:22:390:49 | object creation of type Point | expressions.cs:340:18:340:22 | Point | expressions.cs:390:34:390:49 | { ..., ... } |
|
||||
| expressions.cs:385:14:385:26 | MainCreations | expressions.cs:391:22:391:49 | object creation of type Point | expressions.cs:340:18:340:22 | Point | expressions.cs:391:34:391:49 | { ..., ... } |
|
||||
| expressions.cs:386:14:386:26 | MainCreations | expressions.cs:388:23:388:48 | object creation of type Point | expressions.cs:341:18:341:22 | Point | expressions.cs:388:33:388:48 | { ..., ... } |
|
||||
| expressions.cs:386:14:386:26 | MainCreations | expressions.cs:391:22:391:49 | object creation of type Point | expressions.cs:341:18:341:22 | Point | expressions.cs:391:34:391:49 | { ..., ... } |
|
||||
| expressions.cs:386:14:386:26 | MainCreations | expressions.cs:392:22:392:49 | object creation of type Point | expressions.cs:341:18:341:22 | Point | expressions.cs:392:34:392:49 | { ..., ... } |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
| expressions.cs:387:23:387:48 | object creation of type Point | expressions.cs:387:33:387:48 | { ..., ... } | expressions.cs:387:35:387:39 | ... = ... | expressions.cs:387:42:387:46 | ... = ... |
|
||||
| expressions.cs:390:22:390:49 | object creation of type Point | expressions.cs:390:34:390:49 | { ..., ... } | expressions.cs:390:36:390:40 | ... = ... | expressions.cs:390:43:390:47 | ... = ... |
|
||||
| expressions.cs:388:23:388:48 | object creation of type Point | expressions.cs:388:33:388:48 | { ..., ... } | expressions.cs:388:35:388:39 | ... = ... | expressions.cs:388:42:388:46 | ... = ... |
|
||||
| expressions.cs:391:22:391:49 | object creation of type Point | expressions.cs:391:34:391:49 | { ..., ... } | expressions.cs:391:36:391:40 | ... = ... | expressions.cs:391:43:391:47 | ... = ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:391:34:391:49 | { ..., ... } | expressions.cs:391:36:391:40 | ... = ... | expressions.cs:391:43:391:47 | ... = ... |
|
||||
| expressions.cs:392:34:392:49 | { ..., ... } | expressions.cs:392:36:392:40 | ... = ... | expressions.cs:392:43:392:47 | ... = ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:389:13:392:13 | { ..., ... } | expressions.cs:390:17:390:49 | ... = ... | expressions.cs:391:17:391:49 | ... = ... |
|
||||
| expressions.cs:390:13:393:13 | { ..., ... } | expressions.cs:391:17:391:49 | ... = ... | expressions.cs:392:17:392:49 | ... = ... |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:385:14:385:26 | MainCreations | expressions.cs:393:29:397:13 | object creation of type Rectangle2 |
|
||||
| expressions.cs:386:14:386:26 | MainCreations | expressions.cs:394:29:398:13 | object creation of type Rectangle2 |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:385:14:385:26 | MainCreations | expressions.cs:398:32:398:77 | object creation of type List<Int32> | expressions.cs:398:46:398:77 | { ..., ... } |
|
||||
| expressions.cs:386:14:386:26 | MainCreations | expressions.cs:399:32:399:77 | object creation of type List<Int32> | expressions.cs:399:46:399:77 | { ..., ... } |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:385:14:385:26 | MainCreations | expressions.cs:399:28:408:7 | object creation of type List<Contact> | expressions.cs:399:46:408:7 | { ..., ... } |
|
||||
| expressions.cs:386:14:386:26 | MainCreations | expressions.cs:400:28:409:7 | object creation of type List<Contact> | expressions.cs:400:46:409:7 | { ..., ... } |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:294:14:294:30 | MainUnaryOperator | expressions.cs:300:29:300:37 | call to operator + | expressions.cs:284:42:284:42 | + |
|
||||
| expressions.cs:295:14:295:30 | MainUnaryOperator | expressions.cs:301:29:301:37 | call to operator + | expressions.cs:285:42:285:42 | + |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:332:14:332:35 | MainConversionOperator | expressions.cs:334:23:334:30 | call to operator explicit conversion | expressions.cs:322:32:322:39 | explicit conversion |
|
||||
| expressions.cs:333:14:333:35 | MainConversionOperator | expressions.cs:335:23:335:30 | call to operator explicit conversion | expressions.cs:323:32:323:39 | explicit conversion |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:332:14:332:35 | MainConversionOperator | expressions.cs:335:22:335:22 | call to operator implicit conversion | expressions.cs:317:32:317:39 | implicit conversion |
|
||||
| expressions.cs:333:14:333:35 | MainConversionOperator | expressions.cs:336:22:336:22 | call to operator implicit conversion | expressions.cs:318:32:318:39 | implicit conversion |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:294:14:294:30 | MainUnaryOperator | expressions.cs:298:19:298:23 | call to operator ++ | expressions.cs:276:42:276:43 | ++ |
|
||||
| expressions.cs:295:14:295:30 | MainUnaryOperator | expressions.cs:299:19:299:23 | call to operator ++ | expressions.cs:277:42:277:43 | ++ |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| expressions.cs:294:14:294:30 | MainUnaryOperator | expressions.cs:299:19:299:23 | call to operator ++ | expressions.cs:276:42:276:43 | ++ |
|
||||
| expressions.cs:295:14:295:30 | MainUnaryOperator | expressions.cs:300:19:300:23 | call to operator ++ | expressions.cs:277:42:277:43 | ++ |
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
| expressions.cs:470:20:470:27 | addition | expressions.cs:472:26:472:26 | access to parameter a | expressions.cs:485:40:485:40 | + |
|
||||
| expressions.cs:470:20:470:27 | addition | expressions.cs:472:30:472:30 | access to parameter b | expressions.cs:485:40:485:40 | + |
|
||||
| expressions.cs:470:20:470:27 | addition | expressions.cs:473:13:473:18 | access to local variable result | expressions.cs:485:40:485:40 | + |
|
||||
| expressions.cs:470:20:470:27 | addition | expressions.cs:473:23:473:23 | access to parameter c | expressions.cs:485:40:485:40 | + |
|
||||
| expressions.cs:471:20:471:27 | addition | expressions.cs:473:26:473:26 | access to parameter a | expressions.cs:486:40:486:40 | + |
|
||||
| expressions.cs:471:20:471:27 | addition | expressions.cs:473:30:473:30 | access to parameter b | expressions.cs:486:40:486:40 | + |
|
||||
| expressions.cs:471:20:471:27 | addition | expressions.cs:474:13:474:18 | access to local variable result | expressions.cs:486:40:486:40 | + |
|
||||
| expressions.cs:471:20:471:27 | addition | expressions.cs:474:23:474:23 | access to parameter c | expressions.cs:486:40:486:40 | + |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
| expressions.cs:464:21:464:35 | delegateCombine | expressions.cs:462:11:462:23 | OperatorCalls | expressions.cs:467:13:467:27 | access to local variable PropertyChanged | expressions.cs:491:30:491:39 | MyDelegate |
|
||||
| expressions.cs:464:21:464:35 | delegateCombine | expressions.cs:462:11:462:23 | OperatorCalls | expressions.cs:467:32:467:34 | access to parameter fun | expressions.cs:491:30:491:39 | MyDelegate |
|
||||
| expressions.cs:465:21:465:35 | delegateCombine | expressions.cs:463:11:463:23 | OperatorCalls | expressions.cs:468:13:468:27 | access to local variable PropertyChanged | expressions.cs:492:30:492:39 | MyDelegate |
|
||||
| expressions.cs:465:21:465:35 | delegateCombine | expressions.cs:463:11:463:23 | OperatorCalls | expressions.cs:468:32:468:34 | access to parameter fun | expressions.cs:492:30:492:39 | MyDelegate |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
| expressions.cs:67:16:67:19 | Name | expressions.cs:70:26:70:30 | access to parameter value |
|
||||
| expressions.cs:377:23:377:26 | Name | expressions.cs:377:64:377:68 | access to parameter value |
|
||||
| expressions.cs:378:23:378:26 | Name | expressions.cs:378:64:378:68 | access to parameter value |
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user