diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs index 2c3b25b2e1c4..14d9b5480151 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs @@ -74,6 +74,7 @@ protected override void ExtractInitializers(TextWriter trapFile) { case SyntaxKind.BaseConstructorInitializer: initializerType = Symbol.ContainingType.BaseType!; + ExtractObjectInitCall(trapFile); break; case SyntaxKind.ThisConstructorInitializer: initializerType = Symbol.ContainingType; @@ -90,10 +91,12 @@ protected override void ExtractInitializers(TextWriter trapFile) var primaryInfo = Context.GetSymbolInfo(primaryInitializer); var primarySymbol = primaryInfo.Symbol; + ExtractObjectInitCall(trapFile); ExtractSourceInitializer(trapFile, primarySymbol?.ContainingType, (IMethodSymbol?)primarySymbol, primaryInitializer.ArgumentList, primaryInitializer.GetLocation()); } else if (Symbol.MethodKind is MethodKind.Constructor) { + ExtractObjectInitCall(trapFile); var baseType = Symbol.ContainingType.BaseType; if (baseType is null) { @@ -127,6 +130,27 @@ protected override void ExtractInitializers(TextWriter trapFile) } } + private void ExtractObjectInitCall(TextWriter trapFile) + { + var target = ObjectInitMethod.Create(Context, ContainingType!); + + var type = Context.Compilation.GetSpecialType(SpecialType.System_Void); + + var info = new ExpressionInfo(Context, + AnnotatedTypeSymbol.CreateNotAnnotated(type), + Location, + Kinds.ExprKind.METHOD_INVOCATION, + this, + -2, + isCompilerGenerated: true, + null); + var obinitCall = new Expression(info); + + trapFile.expr_call(obinitCall, target); + + Expressions.This.CreateImplicit(Context, Symbol.ContainingType, Location, obinitCall, -1); + } + private void ExtractSourceInitializer(TextWriter trapFile, ITypeSymbol? type, IMethodSymbol? symbol, ArgumentListSyntax arguments, Microsoft.CodeAnalysis.Location location) { var initInfo = new ExpressionInfo(Context, diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/IMethodEntity.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/IMethodEntity.cs new file mode 100644 index 000000000000..278f2b18798e --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/IMethodEntity.cs @@ -0,0 +1,9 @@ +namespace Semmle.Extraction.CSharp.Entities +{ + /// + /// Marker interface for method entities. + /// + public interface IMethodEntity : IEntity + { + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs index c1b0f1a65bcb..c92c561f31b6 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs @@ -9,7 +9,7 @@ namespace Semmle.Extraction.CSharp.Entities { - internal abstract class Method : CachedSymbol, IExpressionParentEntity, IStatementParentEntity + internal abstract class Method : CachedSymbol, IExpressionParentEntity, IStatementParentEntity, IMethodEntity { protected Method(Context cx, IMethodSymbol init) : base(cx, init) { } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/ObjectInitMethod.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/ObjectInitMethod.cs new file mode 100644 index 000000000000..ce07e56508db --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/ObjectInitMethod.cs @@ -0,0 +1,56 @@ +using System.IO; +using Microsoft.CodeAnalysis; + +namespace Semmle.Extraction.CSharp.Entities +{ + internal sealed class ObjectInitMethod : CachedEntity, IMethodEntity + { + private Type ContainingType { get; } + + private ObjectInitMethod(Context cx, Type containingType) + : base(cx) + { + this.ContainingType = containingType; + } + + public static readonly string Name = ""; + + public static ObjectInitMethod Create(Context cx, Type containingType) + { + return ObjectInitMethodFactory.Instance.CreateEntity(cx, (typeof(ObjectInitMethod), containingType), containingType); + } + + public override void Populate(TextWriter trapFile) + { + var returnType = Type.Create(Context, Context.Compilation.GetSpecialType(SpecialType.System_Void)); + + trapFile.methods(this, Name, ContainingType, returnType.TypeRef, this); + + trapFile.compiler_generated(this); + + trapFile.method_location(this, Context.CreateLocation(ReportingLocation)); + } + + public override void WriteId(EscapingTextWriter trapFile) + { + trapFile.WriteSubId(ContainingType); + trapFile.Write("."); + trapFile.Write(Name); + trapFile.Write(";method"); + } + + public override Microsoft.CodeAnalysis.Location? ReportingLocation => ContainingType.ReportingLocation; + + public override bool NeedsPopulation => true; + + public override TrapStackBehaviour TrapStackBehaviour => TrapStackBehaviour.NoLabel; + + private class ObjectInitMethodFactory : CachedEntityFactory + { + public static ObjectInitMethodFactory Instance { get; } = new ObjectInitMethodFactory(); + + public override ObjectInitMethod Create(Context cx, Type containingType) => + new ObjectInitMethod(cx, containingType); + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Trap/Tuples.cs b/csharp/extractor/Semmle.Extraction.CSharp/Trap/Tuples.cs index 8960b6adb67f..b789eaa2e9c7 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Trap/Tuples.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Trap/Tuples.cs @@ -175,7 +175,7 @@ internal static void expr_argument(this TextWriter trapFile, Expression expr, in internal static void expr_argument_name(this TextWriter trapFile, Expression expr, string name) => trapFile.WriteTuple("expr_argument_name", expr, name); - internal static void expr_call(this TextWriter trapFile, Expression expr, Method target) => + internal static void expr_call(this TextWriter trapFile, Expression expr, IMethodEntity target) => trapFile.WriteTuple("expr_call", expr, target); internal static void expr_flowstate(this TextWriter trapFile, Expression expr, int flowState) => @@ -247,10 +247,10 @@ internal static void localvar_location(this TextWriter trapFile, LocalVariable v internal static void localvars(this TextWriter trapFile, LocalVariable key, VariableKind kind, string name, int @var, Type type, Expression expr) => trapFile.WriteTuple("localvars", key, (int)kind, name, @var, type, expr); - internal static void method_location(this TextWriter trapFile, Method method, Location location) => + internal static void method_location(this TextWriter trapFile, IMethodEntity method, Location location) => trapFile.WriteTuple("method_location", method, location); - internal static void methods(this TextWriter trapFile, Method method, string name, Type declType, Type retType, Method originalDefinition) => + internal static void methods(this TextWriter trapFile, IMethodEntity method, string name, Type declType, Type retType, IMethodEntity originalDefinition) => trapFile.WriteTuple("methods", method, name, declType, retType, originalDefinition); internal static void modifiers(this TextWriter trapFile, Label entity, string modifier) => diff --git a/csharp/ql/lib/semmle/code/csharp/Callable.qll b/csharp/ql/lib/semmle/code/csharp/Callable.qll index 44e7c3cf4ca8..49a2271b27c8 100644 --- a/csharp/ql/lib/semmle/code/csharp/Callable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Callable.qll @@ -281,7 +281,6 @@ class Method extends Callable, Virtualizable, Attributable, @method { /** Holds if this method has a `params` parameter. */ predicate hasParams() { exists(this.getParamsType()) } - // Remove when `Callable.isOverridden()` is removed override predicate fromSource() { Callable.super.fromSource() and not this.isCompilerGenerated() @@ -317,6 +316,19 @@ class ExtensionMethod extends Method { override string getAPrimaryQlClass() { result = "ExtensionMethod" } } +/** + * An object initializer method. + * + * This is an extractor-synthesized method that executes the field + * initializers. Note that the AST nodes for the field initializers are nested + * directly under the class, and therefore this method has no body in the AST. + * On the other hand, this provides the unique enclosing callable for the field + * initializers and their control flow graph. + */ +class ObjectInitMethod extends Method { + ObjectInitMethod() { this.getName() = "" } +} + /** * A constructor, for example `public C() { }` on line 2 in * @@ -350,6 +362,9 @@ class Constructor extends Callable, Member, Attributable, @constructor { */ ConstructorInitializer getInitializer() { result = this.getChildExpr(-1) } + /** Gets the object initializer call of this constructor, if any. */ + MethodCall getObjectInitializerCall() { result = this.getChildExpr(-2) } + /** Holds if this constructor has an initializer. */ predicate hasInitializer() { exists(this.getInitializer()) } diff --git a/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll b/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll index be79c5795133..aa834ef91038 100644 --- a/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll +++ b/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll @@ -55,7 +55,8 @@ class TopLevelExprParent extends Element, @top_level_expr_parent { /** INTERNAL: Do not use. */ Expr getExpressionBody(Callable c) { result = c.getAChildExpr() and - not result = c.(Constructor).getInitializer() + not result = c.(Constructor).getInitializer() and + not result = c.(Constructor).getObjectInitializerCall() } /** INTERNAL: Do not use. */ @@ -211,6 +212,8 @@ private module Cached { enclosingBody(cfe, getBody(c)) or parent*(enclosingStart(cfe), c.(Constructor).getInitializer()) + or + parent*(cfe, c.(Constructor).getObjectInitializerCall()) } /** Holds if the enclosing statement of expression `e` is `s`. */ diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll index 5f62d6d21df1..66b1a9d195ca 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll @@ -6,10 +6,65 @@ import csharp private import codeql.controlflow.Cfg as CfgShared private import Completion -private import Splitting private import semmle.code.csharp.ExprOrStmtParent private import semmle.code.csharp.commons.Compilation +private module Initializers { + /** + * A non-static member with an initializer, for example a field `int Field = 0`. + */ + class InitializedInstanceMember extends Member { + InitializedInstanceMember() { + exists(AssignExpr ae | + not this.isStatic() and + expr_parent_top_level(ae, _, this) and + not ae = any(Callable c).getExpressionBody() + ) + } + + /** Gets the initializer expression. */ + AssignExpr getInitializer() { expr_parent_top_level(result, _, this) } + } + + /** + * Holds if `obinit` is an object initializer method that performs the initialization + * of a member via assignment `init`. + */ + predicate obinitInitializes(ObjectInitMethod obinit, AssignExpr init) { + exists(InitializedInstanceMember m | + obinit.getDeclaringType().getAMember() = m and + init = m.getInitializer() + ) + } + + /** + * Gets the `i`th member initializer expression for object initializer method `obinit` + * in compilation `comp`. + */ + AssignExpr initializedInstanceMemberOrder(ObjectInitMethod obinit, CompilationExt comp, int i) { + obinitInitializes(obinit, result) and + result = + rank[i + 1](AssignExpr ae0, Location l | + obinitInitializes(obinit, ae0) and + l = ae0.getLocation() and + getCompilation(l.getFile()) = comp + | + ae0 order by l.getStartLine(), l.getStartColumn(), l.getFile().getAbsolutePath() + ) + } + + /** + * Gets the last member initializer expression for non-static constructor `c` + * in compilation `comp`. + */ + AssignExpr lastInitializer(ObjectInitMethod obinit, CompilationExt comp) { + exists(int i | + result = initializedInstanceMemberOrder(obinit, comp, i) and + not exists(initializedInstanceMemberOrder(obinit, comp, i + 1)) + ) + } +} + /** An element that defines a new CFG scope. */ class CfgScope extends Element, @top_level_exprorstmt_parent { CfgScope() { @@ -19,7 +74,7 @@ class CfgScope extends Element, @top_level_exprorstmt_parent { any(Callable c | c.(Constructor).hasInitializer() or - InitializerSplitting::constructorInitializes(c, _) + Initializers::obinitInitializes(c, _) or c.hasBody() ) @@ -146,14 +201,16 @@ private predicate expr_parent_top_level_adjusted2( predicate scopeFirst(CfgScope scope, AstNode first) { scope = any(Callable c | - if exists(c.(Constructor).getInitializer()) - then first(c.(Constructor).getInitializer(), first) + if exists(c.(Constructor).getObjectInitializerCall()) + then first(c.(Constructor).getObjectInitializerCall(), first) else - if InitializerSplitting::constructorInitializes(c, _) - then first(InitializerSplitting::constructorInitializeOrder(c, _, 0), first) + if exists(c.(Constructor).getInitializer()) + then first(c.(Constructor).getInitializer(), first) else first(c.getBody(), first) ) or + first(Initializers::initializedInstanceMemberOrder(scope, _, 0), first) + or expr_parent_top_level_adjusted2(any(Expr e | first(e, first)), _, scope) and not scope instanceof Callable } @@ -165,14 +222,33 @@ predicate scopeLast(CfgScope scope, AstNode last, Completion c) { last(callable.getBody(), last, c) and not c instanceof GotoCompletion or - last(InitializerSplitting::lastConstructorInitializer(scope, _), last, c) and + last(callable.(Constructor).getInitializer(), last, c) and not callable.hasBody() ) or + last(Initializers::lastInitializer(scope, _), last, c) + or expr_parent_top_level_adjusted2(any(Expr e | last(e, last, c)), _, scope) and not scope instanceof Callable } +private class ObjectInitTree extends ControlFlowTree instanceof ObjectInitMethod { + final override predicate propagatesAbnormal(AstNode child) { none() } + + final override predicate first(AstNode first) { none() } + + final override predicate last(AstNode last, Completion c) { none() } + + final override predicate succ(AstNode pred, AstNode succ, Completion c) { + exists(CompilationExt comp, int i | + // Flow from one member initializer to the next + last(Initializers::initializedInstanceMemberOrder(this, comp, i), pred, c) and + c instanceof NormalCompletion and + first(Initializers::initializedInstanceMemberOrder(this, comp, i + 1), succ) + ) + } +} + private class ConstructorTree extends ControlFlowTree instanceof Constructor { final override predicate propagatesAbnormal(AstNode child) { none() } @@ -187,18 +263,23 @@ private class ConstructorTree extends ControlFlowTree instanceof Constructor { comp = getCompilation(result.getFile()) } + pragma[noinline] + private MethodCall getObjectInitializerCall(CompilationExt comp) { + result = super.getObjectInitializerCall() and + comp = getCompilation(result.getFile()) + } + + pragma[noinline] + private ConstructorInitializer getInitializer(CompilationExt comp) { + result = super.getInitializer() and + comp = getCompilation(result.getFile()) + } + final override predicate succ(AstNode pred, AstNode succ, Completion c) { - exists(CompilationExt comp, int i, AssignExpr ae | - ae = InitializerSplitting::constructorInitializeOrder(this, comp, i) and - last(ae, pred, c) and - c instanceof NormalCompletion - | - // Flow from one member initializer to the next - first(InitializerSplitting::constructorInitializeOrder(this, comp, i + 1), succ) - or - // Flow from last member initializer to constructor body - ae = InitializerSplitting::lastConstructorInitializer(this, comp) and - first(this.getBody(comp), succ) + exists(CompilationExt comp | + last(this.getObjectInitializerCall(comp), pred, c) and + c instanceof NormalCompletion and + first(this.getInitializer(comp), succ) ) } } @@ -837,13 +918,7 @@ module Expressions { last(this, pred, c) and con = super.getConstructor() and comp = getCompilation(this.getFile()) and - c instanceof NormalCompletion - | - // Flow from constructor initializer to first member initializer - first(InitializerSplitting::constructorInitializeOrder(con, comp, 0), succ) - or - // Flow from constructor initializer to first element of constructor body - not exists(InitializerSplitting::constructorInitializeOrder(con, comp, _)) and + c instanceof NormalCompletion and first(con.getBody(comp), succ) ) } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll index 63d2c181da45..87579a075f95 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll @@ -22,14 +22,10 @@ private module Cached { } cached - newtype TSplitKind = - TInitializerSplitKind() or - TConditionalCompletionSplitKind() + newtype TSplitKind = TConditionalCompletionSplitKind() cached - newtype TSplit = - TInitializerSplit(Constructor c) { InitializerSplitting::constructorInitializes(c, _) } or - TConditionalCompletionSplit(ConditionalCompletion c) + newtype TSplit = TConditionalCompletionSplit(ConditionalCompletion c) } import Cached @@ -43,186 +39,6 @@ class Split extends TSplit { string toString() { none() } } -module InitializerSplitting { - private import semmle.code.csharp.ExprOrStmtParent - - /** - * A non-static member with an initializer, for example a field `int Field = 0`. - */ - class InitializedInstanceMember extends Member { - InitializedInstanceMember() { - exists(AssignExpr ae | - not this.isStatic() and - expr_parent_top_level(ae, _, this) and - not ae = any(Callable c).getExpressionBody() - ) - } - - /** Gets the initializer expression. */ - AssignExpr getInitializer() { expr_parent_top_level(result, _, this) } - - /** - * Gets a control flow element that is a syntactic descendant of the - * initializer expression. - */ - AstNode getAnInitializerDescendant() { - result = this.getInitializer() - or - result = this.getAnInitializerDescendant().getAChild() - } - } - - /** - * Holds if `c` is a non-static constructor that performs the initialization - * of a member via assignment `init`. - */ - predicate constructorInitializes(InstanceConstructor c, AssignExpr init) { - exists(InitializedInstanceMember m | - c.isUnboundDeclaration() and - c.getDeclaringType().getAMember() = m and - not c.getInitializer().isThis() and - init = m.getInitializer() - ) - } - - /** - * Gets the `i`th member initializer expression for non-static constructor `c` - * in compilation `comp`. - */ - AssignExpr constructorInitializeOrder(Constructor c, CompilationExt comp, int i) { - constructorInitializes(c, result) and - result = - rank[i + 1](AssignExpr ae0, Location l | - constructorInitializes(c, ae0) and - l = ae0.getLocation() and - getCompilation(l.getFile()) = comp - | - ae0 order by l.getStartLine(), l.getStartColumn(), l.getFile().getAbsolutePath() - ) - } - - /** - * Gets the last member initializer expression for non-static constructor `c` - * in compilation `comp`. - */ - AssignExpr lastConstructorInitializer(Constructor c, CompilationExt comp) { - exists(int i | - result = constructorInitializeOrder(c, comp, i) and - not exists(constructorInitializeOrder(c, comp, i + 1)) - ) - } - - /** - * A split for non-static member initializers belonging to a given non-static - * constructor. For example, in - * - * ```csharp - * class C - * { - * int Field1 = 0; - * int Field2 = Field1 + 1; - * int Field3; - * - * public C() - * { - * Field3 = 2; - * } - * - * public C(int i) - * { - * Field3 = 3; - * } - * } - * ``` - * - * the initializer expressions `Field1 = 0` and `Field2 = Field1 + 1` are split - * on the two constructors. This is in order to generate CFGs for the two - * constructors that mimic - * - * ```csharp - * public C() - * { - * Field1 = 0; - * Field2 = Field1 + 1; - * Field3 = 2; - * } - * ``` - * - * and - * - * ```csharp - * public C() - * { - * Field1 = 0; - * Field2 = Field1 + 1; - * Field3 = 3; - * } - * ``` - * - * respectively. - */ - private class InitializerSplit extends Split, TInitializerSplit { - private Constructor c; - - InitializerSplit() { this = TInitializerSplit(c) } - - /** Gets the constructor. */ - Constructor getConstructor() { result = c } - - override string toString() { result = "" } - } - - private class InitializerSplitKind extends SplitKind, TInitializerSplitKind { - override int getListOrder() { result = 0 } - - override predicate isEnabled(AstNode cfe) { this.appliesTo(cfe) } - - override string toString() { result = "Initializer" } - } - - int getNextListOrder() { result = 1 } - - private class InitializerSplitImpl extends SplitImpl instanceof InitializerSplit { - override InitializerSplitKind getKind() { any() } - - override predicate hasEntry(AstNode pred, AstNode succ, Completion c) { - exists(ConstructorInitializer ci | - last(ci, pred, c) and - succ(pred, succ, c) and - succ = any(InitializedInstanceMember m).getAnInitializerDescendant() and - super.getConstructor() = ci.getConstructor() - ) - } - - override predicate hasEntryScope(CfgScope scope, AstNode first) { - scopeFirst(scope, first) and - scope = super.getConstructor() and - first = any(InitializedInstanceMember m).getAnInitializerDescendant() - } - - override predicate hasExit(AstNode pred, AstNode succ, Completion c) { - this.appliesTo(pred) and - succ(pred, succ, c) and - not succ = any(InitializedInstanceMember m).getAnInitializerDescendant() and - succ.(ControlFlowElement).getEnclosingCallable() = super.getConstructor() - } - - override predicate hasExitScope(CfgScope scope, AstNode last, Completion c) { - this.appliesTo(last) and - scopeLast(scope, last, c) and - scope = super.getConstructor() - } - - override predicate hasSuccessor(AstNode pred, AstNode succ, Completion c) { - this.appliesSucc(pred, succ, c) and - succ = - any(InitializedInstanceMember m | - constructorInitializes(super.getConstructor(), m.getInitializer()) - ).getAnInitializerDescendant() - } - } -} - module ConditionalCompletionSplitting { /** * A split for conditional completions. For example, in @@ -249,7 +65,7 @@ module ConditionalCompletionSplitting { } private class ConditionalCompletionSplitKind_ extends SplitKind, TConditionalCompletionSplitKind { - override int getListOrder() { result = InitializerSplitting::getNextListOrder() } + override int getListOrder() { result = 0 } override predicate isEnabled(AstNode cfe) { this.appliesTo(cfe) } @@ -312,6 +128,4 @@ module ConditionalCompletionSplitting { ) } } - - int getNextListOrder() { result = InitializerSplitting::getNextListOrder() + 1 } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll index 9ba96154820d..31956756c607 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll @@ -16,7 +16,7 @@ private import semmle.code.csharp.internal.Location */ Callable getCallableForDataFlow(Callable c) { result = c.getUnboundDeclaration() and - result.hasBody() and + (result.hasBody() or result instanceof ObjectInitMethod) and result.getFile().fromSource() } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index 4f7f0141da2a..3aaff74da17f 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -178,12 +178,24 @@ private module ThisFlow { cfn = n.(InstanceParameterAccessPreNode).getUnderlyingControlFlowNode() } + private predicate primaryConstructorThisAccess(Node n, BasicBlock bb, int ppos) { + exists(Parameter p | + n.(PrimaryConstructorThisAccessPreNode).getParameter() = p and + bb.getCallable() = p.getCallable() and + ppos = p.getPosition() + ) + } + + private int numberOfPrimaryConstructorParameters(BasicBlock bb) { + result = strictcount(int primaryParamPos | primaryConstructorThisAccess(_, bb, primaryParamPos)) + } + private predicate thisAccess(Node n, BasicBlock bb, int i) { thisAccess(n, bb.getNode(i)) or - exists(Parameter p | n.(PrimaryConstructorThisAccessPreNode).getParameter() = p | - bb.getCallable() = p.getCallable() and - i = p.getPosition() + 1 + exists(int ppos | + primaryConstructorThisAccess(n, bb, ppos) and + i = ppos - numberOfPrimaryConstructorParameters(bb) ) or exists(DataFlowCallable c, ControlFlow::BasicBlocks::EntryBlock entry | @@ -195,8 +207,11 @@ private module ThisFlow { // entry definition. In case `c` doesn't have multiple bodies, the line below // is simply the same as `bb = entry`, because `entry.getFirstNode().getASuccessor()` // will be in the entry block. - bb = succ.getBasicBlock() and - i = -1 + bb = succ.getBasicBlock() + | + i = -1 - numberOfPrimaryConstructorParameters(bb) + or + not exists(numberOfPrimaryConstructorParameters(bb)) and i = -1 ) ) } @@ -3070,6 +3085,9 @@ predicate allowParameterReturnInSelf(ParameterNode p) { or VariableCapture::Flow::heuristicAllowInstanceParameterReturnInSelf(p.(DelegateSelfReferenceNode) .getCallable()) + or + // Allow field initializers to access Primary Constructor parameters + p.getEnclosingCallable() instanceof ObjectInitMethod } /** An approximated `Content`. */ diff --git a/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql b/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql index 8ae848feaebb..dbef9b714ef2 100644 --- a/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql +++ b/csharp/ql/src/Bad Practices/Declarations/NoConstantsOnly.ql @@ -28,6 +28,7 @@ where c.getAMember() instanceof ConstantField and forex(Member m | m = c.getAMember() | m instanceof ConstantField or - m instanceof Constructor + m instanceof Constructor or + m.isCompilerGenerated() ) select c, "Class '" + c.getName() + "' only declares common constants." diff --git a/csharp/ql/test/library-tests/arguments/PrintAst.expected b/csharp/ql/test/library-tests/arguments/PrintAst.expected index b63b49cc7f5f..fbf61c14743d 100644 --- a/csharp/ql/test/library-tests/arguments/PrintAst.expected +++ b/csharp/ql/test/library-tests/arguments/PrintAst.expected @@ -1,6 +1,6 @@ arguments.cs: # 4| [Class] ArgumentsTest -# 6| 4: [InstanceConstructor] ArgumentsTest +# 6| 5: [InstanceConstructor] ArgumentsTest #-----| 2: (Parameters) # 6| 0: [Parameter] x # 6| -1: [TypeMention] int @@ -9,7 +9,7 @@ arguments.cs: # 6| -1: [TypeMention] int # 6| 1: [IntLiteral] 0 # 7| 4: [BlockStmt] {...} -# 10| 5: [InstanceConstructor] ArgumentsTest +# 10| 6: [InstanceConstructor] ArgumentsTest #-----| 2: (Parameters) # 10| 0: [Parameter] x # 10| -1: [TypeMention] int @@ -22,7 +22,7 @@ arguments.cs: # 12| 0: [AssignExpr] ... = ... # 12| 0: [ParameterAccess] access to parameter y # 12| 1: [ParameterAccess] access to parameter x -# 15| 6: [Method] f1 +# 15| 7: [Method] f1 # 15| -1: [TypeMention] Void #-----| 2: (Parameters) # 15| 0: [Parameter] x @@ -32,7 +32,7 @@ arguments.cs: # 15| -1: [TypeMention] int # 15| 1: [IntLiteral] 2 # 16| 4: [BlockStmt] {...} -# 19| 7: [Method] f2 +# 19| 8: [Method] f2 # 19| -1: [TypeMention] Void #-----| 2: (Parameters) # 19| 0: [Parameter] x @@ -46,7 +46,7 @@ arguments.cs: # 21| 0: [AssignExpr] ... = ... # 21| 0: [ParameterAccess] access to parameter y # 21| 1: [ParameterAccess] access to parameter x -# 24| 8: [Method] f +# 24| 9: [Method] f # 24| -1: [TypeMention] Void # 25| 4: [BlockStmt] {...} # 26| 0: [LocalVariableDeclStmt] ... ...; @@ -73,7 +73,7 @@ arguments.cs: # 31| -1: [TypeMention] ArgumentsTest # 31| 0: [IntLiteral] 10 # 31| 1: [IntLiteral] 5 -# 34| 9: [Method] f3 +# 34| 10: [Method] f3 # 34| -1: [TypeMention] Void #-----| 2: (Parameters) # 34| 0: [Parameter] o @@ -135,7 +135,7 @@ arguments.cs: # 43| 1: [LocalVariableAccess] access to local variable s1 # 43| 2: [CastExpr] (...) ... # 43| 1: [LocalVariableAccess] access to local variable s2 -# 46| 10: [Method] f4 +# 46| 11: [Method] f4 # 46| -1: [TypeMention] Void #-----| 2: (Parameters) # 46| 0: [Parameter] args @@ -150,13 +150,13 @@ arguments.cs: # 48| -1: [ArrayInitializer] { ..., ... } # 48| 0: [NullLiteral] null # 48| 1: [NullLiteral] null -# 51| 11: [Property] Prop +# 51| 12: [Property] Prop # 51| -1: [TypeMention] int # 51| 3: [Getter] get_Prop # 51| 4: [Setter] set_Prop #-----| 2: (Parameters) # 51| 0: [Parameter] value -# 53| 12: [Indexer] Item +# 53| 13: [Indexer] Item # 53| -1: [TypeMention] int #-----| 1: (Parameters) # 53| 0: [Parameter] a @@ -176,7 +176,7 @@ arguments.cs: # 53| 1: [Parameter] b # 53| 2: [Parameter] value # 53| 4: [BlockStmt] {...} -# 55| 13: [Method] f5 +# 55| 14: [Method] f5 # 55| -1: [TypeMention] Void # 56| 4: [BlockStmt] {...} # 57| 0: [ExprStmt] ...; @@ -237,14 +237,14 @@ arguments.cs: # 65| 0: [IntLiteral] 15 # 65| 1: [IntLiteral] 16 # 65| 1: [LocalVariableAccess] access to local variable tuple -# 69| 14: [Method] f6 +# 69| 15: [Method] f6 # 69| -1: [TypeMention] Void #-----| 0: (Attributes) # 68| 1: [DefaultAttribute] [My(...)] # 68| -1: [TypeMention] MyAttribute # 68| 0: [BoolLiteral] false # 69| 4: [BlockStmt] {...} -# 72| 15: [Method] f7 +# 72| 16: [Method] f7 # 72| -1: [TypeMention] Void #-----| 0: (Attributes) # 71| 1: [DefaultAttribute] [My(...)] @@ -253,7 +253,7 @@ arguments.cs: # 71| 1: [StringLiteralUtf16] "" # 71| 2: [IntLiteral] 0 # 72| 4: [BlockStmt] {...} -# 74| 17: [Method] f8`1 +# 74| 18: [Method] f8`1 # 74| -1: [TypeMention] Void #-----| 1: (Type parameters) # 74| 0: [TypeParameter] T @@ -337,7 +337,7 @@ arguments.cs: # 86| 1: [IntLiteral] 1 # 86| 1: [CastExpr] (...) ... # 86| 1: [IntLiteral] 2 -# 89| 19: [Method] f9`1 +# 89| 20: [Method] f9`1 # 89| -1: [TypeMention] Void #-----| 1: (Type parameters) # 89| 0: [TypeParameter] T @@ -406,7 +406,7 @@ arguments.cs: # 100| 1: [ElementInitializer] call to method Add # 100| 0: [CastExpr] (...) ... # 100| 1: [IntLiteral] 2 -# 103| 20: [Method] f10 +# 103| 21: [Method] f10 # 103| -1: [TypeMention] Void #-----| 2: (Parameters) # 103| 0: [Parameter] o @@ -465,22 +465,22 @@ arguments.cs: # 116| [Class] MyAttribute #-----| 3: (Base types) # 116| 0: [TypeMention] Attribute -# 118| 4: [Field] x +# 118| 5: [Field] x # 118| -1: [TypeMention] int -# 119| 5: [Property] y +# 119| 6: [Property] y # 119| -1: [TypeMention] string # 119| 3: [Getter] get_y # 119| 4: [Setter] set_y #-----| 2: (Parameters) # 119| 0: [Parameter] value -# 120| 6: [InstanceConstructor] MyAttribute +# 120| 7: [InstanceConstructor] MyAttribute #-----| 2: (Parameters) # 120| 0: [Parameter] b # 120| -1: [TypeMention] bool # 120| 4: [BlockStmt] {...} lambdas.cs: # 3| [Class] LambdaArgumentsTest -# 5| 5: [Method] M1 +# 5| 6: [Method] M1 # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} # 7| 0: [LocalVariableDeclStmt] ... ...; @@ -546,13 +546,13 @@ lambdas.cs: # 17| 0: [IntLiteral] 7 # 17| 1: [IntLiteral] 8 # 17| 2: [IntLiteral] 9 -# 20| 6: [DelegateType] MyDelegate +# 20| 7: [DelegateType] MyDelegate #-----| 2: (Parameters) # 20| 0: [Parameter] x # 20| -1: [TypeMention] int # 20| 1: [Parameter] y # 20| -1: [TypeMention] int -# 22| 7: [Method] M2 +# 22| 8: [Method] M2 # 22| -1: [TypeMention] Void # 23| 4: [BlockStmt] {...} # 24| 0: [LocalVariableDeclStmt] ... ...; diff --git a/csharp/ql/test/library-tests/assignments/PrintAst.expected b/csharp/ql/test/library-tests/assignments/PrintAst.expected index e309da37a0ed..bece0312d15d 100644 --- a/csharp/ql/test/library-tests/assignments/PrintAst.expected +++ b/csharp/ql/test/library-tests/assignments/PrintAst.expected @@ -1,6 +1,6 @@ Assignments.cs: # 1| [Class] Assignments -# 3| 5: [Method] M +# 3| 6: [Method] M # 3| -1: [TypeMention] Void # 4| 4: [BlockStmt] {...} # 5| 0: [LocalVariableDeclStmt] ... ...; @@ -40,7 +40,7 @@ Assignments.cs: # 14| 0: [Parameter] sender # 14| 1: [Parameter] e # 14| 4: [BlockStmt] {...} -# 17| 6: [AddOperator] + +# 17| 7: [AddOperator] + # 17| -1: [TypeMention] Assignments #-----| 2: (Parameters) # 17| 0: [Parameter] x @@ -50,13 +50,13 @@ Assignments.cs: # 18| 4: [BlockStmt] {...} # 19| 0: [ReturnStmt] return ...; # 19| 0: [ParameterAccess] access to parameter x -# 22| 7: [DelegateType] EventHandler +# 22| 8: [DelegateType] EventHandler #-----| 2: (Parameters) # 22| 0: [Parameter] sender # 22| -1: [TypeMention] object # 22| 1: [Parameter] e # 22| -1: [TypeMention] object -# 23| 8: [Event] Event +# 23| 9: [Event] Event # 23| -1: [TypeMention] EventHandler # 23| 3: [AddEventAccessor] add_Event #-----| 2: (Parameters) diff --git a/csharp/ql/test/library-tests/attributes/PrintAst.expected b/csharp/ql/test/library-tests/attributes/PrintAst.expected index 00412ae011a2..e16a6ff8a92d 100644 --- a/csharp/ql/test/library-tests/attributes/PrintAst.expected +++ b/csharp/ql/test/library-tests/attributes/PrintAst.expected @@ -102,7 +102,7 @@ attributes.cs: # 45| 0: [TypeMention] AttributeTargets #-----| 3: (Base types) # 46| 0: [TypeMention] Attribute -# 49| 5: [Method] foo +# 49| 6: [Method] foo # 49| -1: [TypeMention] Void #-----| 0: (Attributes) # 48| 1: [DefaultAttribute] [Conditional(...)] @@ -110,7 +110,7 @@ attributes.cs: # 48| 0: [StringLiteralUtf16] "DEBUG2" # 49| 4: [BlockStmt] {...} # 52| [Class] Bar -# 54| 5: [Method] inc +# 54| 6: [Method] inc # 54| -1: [TypeMention] int #-----| 2: (Parameters) # 54| 0: [Parameter] x @@ -123,14 +123,14 @@ attributes.cs: # 54| 0: [AddExpr] ... + ... # 54| 0: [ParameterAccess] access to parameter x # 54| 1: [IntLiteral] 1 -# 57| 6: [Method] M1 +# 57| 7: [Method] M1 # 57| -1: [TypeMention] Void #-----| 0: (Attributes) # 56| 1: [DefaultAttribute] [My(...)] # 56| -1: [TypeMention] MyAttribute # 56| 0: [BoolLiteral] false # 57| 4: [BlockStmt] {...} -# 61| 7: [Method] M2 +# 61| 8: [Method] M2 # 61| -1: [TypeMention] Void #-----| 0: (Attributes) # 59| 1: [DefaultAttribute] [My(...)] @@ -148,15 +148,15 @@ attributes.cs: # 64| [Class] MyAttribute #-----| 3: (Base types) # 64| 0: [TypeMention] Attribute -# 66| 4: [Field] x +# 66| 5: [Field] x # 66| -1: [TypeMention] int -# 67| 5: [Property] y +# 67| 6: [Property] y # 67| -1: [TypeMention] string # 67| 3: [Getter] get_y # 67| 4: [Setter] set_y #-----| 2: (Parameters) # 67| 0: [Parameter] value -# 68| 6: [InstanceConstructor] MyAttribute +# 68| 7: [InstanceConstructor] MyAttribute #-----| 2: (Parameters) # 68| 0: [Parameter] b # 68| -1: [TypeMention] bool @@ -167,14 +167,14 @@ attributes.cs: # 73| [Class] ArgsAttribute #-----| 3: (Base types) # 73| 0: [TypeMention] Attribute -# 75| 4: [Property] Prop +# 75| 5: [Property] Prop # 75| -1: [TypeMention] Object[] # 75| 1: [TypeMention] object # 75| 3: [Getter] get_Prop # 75| 4: [Setter] set_Prop #-----| 2: (Parameters) # 75| 0: [Parameter] value -# 76| 5: [InstanceConstructor] ArgsAttribute +# 76| 6: [InstanceConstructor] ArgsAttribute #-----| 2: (Parameters) # 76| 0: [Parameter] i # 76| -1: [TypeMention] int @@ -216,7 +216,7 @@ attributes.cs: # 79| 1: [TypeofExpr] typeof(...) # 79| 0: [TypeAccess] access to type Int32 # 79| 0: [TypeMention] int -# 84| 5: [Method] SomeMethod +# 84| 6: [Method] SomeMethod # 84| -1: [TypeMention] int #-----| 0: (Attributes) # 82| 1: [DefaultAttribute] [Args(...)] @@ -279,13 +279,13 @@ attributes.cs: # 87| [Class] My2Attribute #-----| 3: (Base types) # 87| 0: [TypeMention] Attribute -# 89| 4: [Property] X +# 89| 5: [Property] X # 89| -1: [TypeMention] int # 89| 3: [Getter] get_X # 89| 4: [Setter] set_X #-----| 2: (Parameters) # 89| 0: [Parameter] value -# 90| 5: [InstanceConstructor] My2Attribute +# 90| 6: [InstanceConstructor] My2Attribute #-----| 2: (Parameters) # 90| 0: [Parameter] a # 90| -1: [TypeMention] bool @@ -301,7 +301,7 @@ attributes.cs: # 93| [Class] My3Attribute #-----| 3: (Base types) # 93| 0: [TypeMention] Attribute -# 95| 4: [InstanceConstructor] My3Attribute +# 95| 5: [InstanceConstructor] My3Attribute #-----| 2: (Parameters) # 95| 0: [Parameter] x # 95| -1: [TypeMention] int @@ -323,7 +323,7 @@ attributes.cs: # 104| 0: [Parameter] message # 104| -1: [TypeMention] string # 106| [Class] MyAttributeUsage -# 110| 5: [AddOperator] + +# 110| 6: [AddOperator] + # 110| -1: [TypeMention] int #-----| 0: (Attributes) # 108| 1: [DefaultAttribute] [My3(...)] @@ -338,7 +338,7 @@ attributes.cs: # 110| 1: [Parameter] b # 110| -1: [TypeMention] MyAttributeUsage # 110| 4: [IntLiteral] 0 -# 113| 6: [Indexer] Item +# 113| 7: [Indexer] Item # 113| -1: [TypeMention] int #-----| 0: (Attributes) # 112| 1: [DefaultAttribute] [My3(...)] @@ -376,9 +376,9 @@ attributes.cs: # 120| 0: [IntLiteral] 10 # 121| 4: [BlockStmt] {...} # 121| 0: [ReturnStmt] return ...; -# 124| 7: [Field] p +# 124| 8: [Field] p # 124| -1: [TypeMention] int -# 126| 8: [Property] Prop1 +# 126| 9: [Property] Prop1 # 126| -1: [TypeMention] int #-----| 0: (Attributes) # 125| 1: [DefaultAttribute] [My3(...)] @@ -412,10 +412,10 @@ attributes.cs: # 134| 0: [FieldAccess] access to field p # 134| 1: [ParameterAccess] access to parameter value # 138| [Class] Class1 -# 140| 5: [Class] ParamsAttribute +# 140| 6: [Class] ParamsAttribute #-----| 3: (Base types) # 140| 0: [TypeMention] Attribute -# 142| 4: [InstanceConstructor] ParamsAttribute +# 142| 5: [InstanceConstructor] ParamsAttribute #-----| 2: (Parameters) # 142| 0: [Parameter] s1 # 142| -1: [TypeMention] string @@ -425,7 +425,7 @@ attributes.cs: # 142| -1: [TypeMention] Int32[] # 142| 1: [TypeMention] int # 142| 4: [BlockStmt] {...} -# 146| 6: [Method] M1 +# 146| 7: [Method] M1 # 146| -1: [TypeMention] Void #-----| 0: (Attributes) # 145| 1: [DefaultAttribute] [Params(...)] @@ -436,7 +436,7 @@ attributes.cs: # 145| 3: [IntLiteral] 2 # 145| 4: [IntLiteral] 3 # 146| 4: [BlockStmt] {...} -# 149| 7: [Method] M2 +# 149| 8: [Method] M2 # 149| -1: [TypeMention] Void #-----| 0: (Attributes) # 148| 1: [DefaultAttribute] [Params(...)] @@ -447,7 +447,7 @@ attributes.cs: # 148| 3: [IntLiteral] 2 # 148| 4: [IntLiteral] 3 # 149| 4: [BlockStmt] {...} -# 152| 8: [Method] M3 +# 152| 9: [Method] M3 # 152| -1: [TypeMention] Void #-----| 0: (Attributes) # 151| 1: [DefaultAttribute] [Params(...)] @@ -456,7 +456,7 @@ attributes.cs: # 151| 1: [StringLiteralUtf16] "b" # 151| 2: [IntLiteral] 1 # 152| 4: [BlockStmt] {...} -# 155| 9: [Method] M4 +# 155| 10: [Method] M4 # 155| -1: [TypeMention] Void #-----| 0: (Attributes) # 154| 1: [DefaultAttribute] [Params(...)] @@ -472,7 +472,7 @@ attributes.cs: # 158| 1: [DefaultAttribute] [Experimental(...)] # 158| -1: [TypeMention] ExperimentalAttribute # 158| 0: [StringLiteralUtf16] "MyExperimentalClassId" -# 162| 5: [Method] MyExperimentalMethod +# 162| 6: [Method] MyExperimentalMethod # 162| -1: [TypeMention] Void #-----| 0: (Attributes) # 161| 1: [DefaultAttribute] [Experimental(...)] @@ -480,7 +480,7 @@ attributes.cs: # 161| 0: [StringLiteralUtf16] "MyExperimentalMethodId" # 162| 4: [BlockStmt] {...} # 165| [Class] MyOverloadResolutionClass -# 168| 5: [Method] M +# 168| 6: [Method] M # 168| -1: [TypeMention] Void #-----| 0: (Attributes) # 167| 1: [DefaultAttribute] [OverloadResolutionPriority(...)] @@ -492,7 +492,7 @@ attributes.cs: # 168| -1: [TypeMention] Int32[] # 168| 1: [TypeMention] int # 168| 4: [BlockStmt] {...} -# 171| 6: [Method] M +# 171| 7: [Method] M # 171| -1: [TypeMention] Void #-----| 0: (Attributes) # 170| 1: [DefaultAttribute] [OverloadResolutionPriority(...)] @@ -503,7 +503,7 @@ attributes.cs: # 171| -1: [TypeMention] IEnumerable # 171| 1: [TypeMention] int # 171| 4: [BlockStmt] {...} -# 174| 7: [Method] M +# 174| 8: [Method] M # 174| -1: [TypeMention] Void #-----| 0: (Attributes) # 173| 1: [DefaultAttribute] [OverloadResolutionPriority(...)] diff --git a/csharp/ql/test/library-tests/comments/PrintAst.expected b/csharp/ql/test/library-tests/comments/PrintAst.expected index 68c2c582e371..9bc446858ee1 100644 --- a/csharp/ql/test/library-tests/comments/PrintAst.expected +++ b/csharp/ql/test/library-tests/comments/PrintAst.expected @@ -1,19 +1,19 @@ comments1.cs: # 9| [Class] C # 34| [Class] Foo -# 39| 5: [Field] x +# 39| 6: [Field] x # 39| -1: [TypeMention] int -# 42| 6: [Field] y +# 42| 7: [Field] y # 42| -1: [TypeMention] int -# 43| 7: [Field] z +# 43| 8: [Field] z # 43| -1: [TypeMention] int comments2.cs: # 11| [Class] C2 -# 13| 4: [Field] field1 +# 13| 5: [Field] field1 # 13| -1: [TypeMention] int -# 14| 5: [Field] field2 +# 14| 6: [Field] field2 # 14| -1: [TypeMention] int -# 19| 6: [Method] f +# 19| 7: [Method] f # 19| -1: [TypeMention] Void # 20| 4: [BlockStmt] {...} # 23| 0: [ExprStmt] ...; @@ -21,7 +21,7 @@ comments2.cs: # 26| 1: [ExprStmt] ...; # 26| 0: [MethodCall] call to method g # 26| 0: [IntLiteral] 2 -# 29| 7: [Method] g +# 29| 8: [Method] g # 29| -1: [TypeMention] Void #-----| 2: (Parameters) # 29| 0: [Parameter] x @@ -37,8 +37,8 @@ comments2.cs: # 34| -1: [TypeMention] int # 34| 0: [LocalVariableAccess] access to local variable z # 34| 1: [IntLiteral] 0 -# 40| 8: [Class] C3 -# 48| 9: [Property] S1 +# 40| 9: [Class] C3 +# 48| 10: [Property] S1 # 48| -1: [TypeMention] string # 52| 3: [Getter] get_S1 # 52| 4: [BlockStmt] {...} @@ -48,15 +48,15 @@ comments2.cs: #-----| 2: (Parameters) # 53| 0: [Parameter] value # 54| 4: [BlockStmt] {...} -# 61| 10: [Enum] Values +# 61| 11: [Enum] Values # 66| 5: [Field] First # 67| 6: [Field] Second # 73| 7: [Field] Third -# 79| 11: [InstanceConstructor] C2 +# 79| 12: [InstanceConstructor] C2 # 80| 4: [BlockStmt] {...} -# 85| 12: [Destructor] ~C2 +# 85| 13: [Destructor] ~C2 # 86| 4: [BlockStmt] {...} -# 90| 13: [AddOperator] + +# 90| 14: [AddOperator] + # 90| -1: [TypeMention] int #-----| 2: (Parameters) # 90| 0: [Parameter] x @@ -66,7 +66,7 @@ comments2.cs: # 91| 4: [BlockStmt] {...} # 92| 0: [ReturnStmt] return ...; # 92| 0: [IntLiteral] 2 -# 95| 14: [Method] f +# 95| 15: [Method] f # 95| -1: [TypeMention] Void #-----| 2: (Parameters) # 96| 0: [Parameter] x @@ -74,8 +74,8 @@ comments2.cs: # 97| 1: [Parameter] y # 97| -1: [TypeMention] int # 99| 4: [BlockStmt] {...} -# 103| 15: [DelegateType] D -# 107| 16: [Event] E +# 103| 16: [DelegateType] D +# 107| 17: [Event] E # 107| -1: [TypeMention] D # 107| 3: [AddEventAccessor] add_E #-----| 2: (Parameters) @@ -83,7 +83,7 @@ comments2.cs: # 107| 4: [RemoveEventAccessor] remove_E #-----| 2: (Parameters) # 107| 0: [Parameter] value -# 110| 17: [Method] gen +# 110| 18: [Method] gen # 110| -1: [TypeMention] Void # 111| 4: [BlockStmt] {...} # 112| 0: [LocalVariableDeclStmt] ... ...; @@ -110,12 +110,12 @@ comments2.cs: # 115| -1: [TypeMention] int # 115| 0: [LocalVariableAccess] access to local variable t4 # 115| 1: [MethodCall] call to method GenericFn -# 119| 20: [Class] GenericClass`1 +# 119| 21: [Class] GenericClass`1 #-----| 1: (Type parameters) # 119| 0: [TypeParameter] T -# 121| 5: [Field] f +# 121| 6: [Field] f # 121| -1: [TypeMention] int -# 125| 23: [Method] GenericFn`1 +# 125| 24: [Method] GenericFn`1 # 125| -1: [TypeMention] int #-----| 1: (Type parameters) # 125| 0: [TypeParameter] T @@ -129,7 +129,7 @@ comments2.cs: # 128| 0: [IntLiteral] 0 trivia.cs: # 14| [Class] Tr1 -# 16| 5: [Method] M1 +# 16| 6: [Method] M1 # 16| -1: [TypeMention] Void # 17| 4: [BlockStmt] {...} comments1.cs: @@ -155,7 +155,7 @@ trivia.cs: # 28| 0: [LocalVariableDeclExpr] Double d # 28| 0: [TypeMention] double # 32| [Class] Tr2 -# 34| 5: [Method] M1 +# 34| 6: [Method] M1 # 34| -1: [TypeMention] Void # 35| 4: [BlockStmt] {...} # 37| 0: [LocalVariableDeclStmt] ... ...; @@ -165,11 +165,11 @@ trivia.cs: # 39| 0: [LocalVariableDeclExpr] Int32 j # 39| 0: [TypeMention] int # 45| [Class] Tr3 -# 47| 5: [Method] M1 +# 47| 6: [Method] M1 # 47| -1: [TypeMention] Void # 48| 4: [BlockStmt] {...} # 61| [Class] Tr4 -# 63| 5: [Method] M1 +# 63| 6: [Method] M1 # 63| -1: [TypeMention] Void # 64| 4: [BlockStmt] {...} # 73| 0: [LocalVariableDeclStmt] ... ...; @@ -178,25 +178,25 @@ trivia.cs: # 73| 0: [LocalVariableAccess] access to local variable i # 73| 1: [IntLiteral] 1 # 80| [Class] Tr5 -# 83| 5: [Method] M1 +# 83| 6: [Method] M1 # 83| -1: [TypeMention] Void # 84| 4: [BlockStmt] {...} -# 88| 6: [Method] M2 +# 88| 7: [Method] M2 # 88| -1: [TypeMention] Void # 89| 4: [BlockStmt] {...} -# 92| 7: [Field] F1 +# 92| 8: [Field] F1 # 92| -1: [TypeMention] int # 94| 1: [IntLiteral] 10 -# 98| 8: [Field] F2 +# 98| 9: [Field] F2 # 98| -1: [TypeMention] int # 98| 1: [IntLiteral] 0 -# 100| 9: [Property] P1 +# 100| 10: [Property] P1 # 100| -1: [TypeMention] int # 102| 3: [Getter] get_P1 # 104| 4: [Setter] set_P1 #-----| 2: (Parameters) # 104| 0: [Parameter] value -# 108| 10: [Property] P2 +# 108| 11: [Property] P2 # 108| -1: [TypeMention] int # 108| 3: [Getter] get_P2 # 108| 4: [Setter] set_P2 diff --git a/csharp/ql/test/library-tests/constructors/PrintAst.expected b/csharp/ql/test/library-tests/constructors/PrintAst.expected index fc5c19ac2df2..000ae29f2c26 100644 --- a/csharp/ql/test/library-tests/constructors/PrintAst.expected +++ b/csharp/ql/test/library-tests/constructors/PrintAst.expected @@ -1,16 +1,16 @@ constructors.cs: # 1| [NamespaceDeclaration] namespace ... { ... } # 3| 1: [Class] Class -# 5| 4: [InstanceConstructor] Class +# 5| 5: [InstanceConstructor] Class # 6| 4: [BlockStmt] {...} -# 8| 5: [InstanceConstructor] Class +# 8| 6: [InstanceConstructor] Class #-----| 2: (Parameters) # 8| 0: [Parameter] i # 8| -1: [TypeMention] int # 9| 4: [BlockStmt] {...} -# 11| 6: [StaticConstructor] Class +# 11| 7: [StaticConstructor] Class # 12| 4: [BlockStmt] {...} -# 14| 7: [Destructor] ~Class +# 14| 8: [Destructor] ~Class # 15| 4: [BlockStmt] {...} # 16| 0: [LocalVariableDeclStmt] ... ...; # 16| 0: [LocalVariableDeclAndInitExpr] Int32 i = ... @@ -19,13 +19,13 @@ constructors.cs: # 16| 1: [IntLiteral] 0 # 21| [NamespaceDeclaration] namespace ... { ... } # 23| 1: [Class] C1 -# 23| 4: [InstanceConstructor,PrimaryConstructor] C1 +# 23| 5: [InstanceConstructor,PrimaryConstructor] C1 #-----| 2: (Parameters) # 23| 0: [Parameter] o # 23| -1: [TypeMention] object # 23| 1: [Parameter] s # 23| -1: [TypeMention] string -# 25| 5: [InstanceConstructor] C1 +# 25| 6: [InstanceConstructor] C1 #-----| 2: (Parameters) # 25| 0: [Parameter] o # 25| -1: [TypeMention] object @@ -36,7 +36,7 @@ constructors.cs: # 28| 2: [Class] C2 #-----| 3: (Base types) # 28| 0: [TypeMention] C1 -# 28| 4: [InstanceConstructor,PrimaryConstructor] C2 +# 28| 5: [InstanceConstructor,PrimaryConstructor] C2 #-----| 2: (Parameters) # 28| 0: [Parameter] o # 28| -1: [TypeMention] object diff --git a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected index c9f7d2ab35c7..99d89a29c134 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected @@ -1,4 +1,4 @@ -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | 5 | +| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | 7 | | AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | exit get_Item | 4 | | AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | exit set_Item | 4 | | AccessorCalls.cs:7:32:7:34 | enter add_Event | AccessorCalls.cs:7:32:7:34 | exit add_Event | 4 | @@ -12,12 +12,12 @@ | AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:56:10:56:11 | exit M7 | 24 | | AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:61:10:61:11 | exit M8 | 30 | | AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:66:10:66:11 | exit M9 | 58 | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | 5 | +| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | 7 | | ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:11:3:12 | exit M1 | 5 | | ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:12:5:13 | exit M2 | 6 | | ArrayCreation.cs:7:11:7:12 | enter M3 | ArrayCreation.cs:7:11:7:12 | exit M3 | 8 | | ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:12:9:13 | exit M4 | 13 | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | exit AssertTests | 5 | +| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | exit AssertTests | 7 | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:20:9:20 | access to parameter b | 4 | | Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | exit M1 | 1 | | Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | exit M1 (abnormal) | 1 | @@ -163,11 +163,11 @@ | Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | 1 | | Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 (abnormal) | 1 | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | 2 | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | exit Assignments | 5 | +| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | exit Assignments | 7 | | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | exit M | 34 | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | exit (...) => ... | 4 | | Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | exit + | 6 | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | exit BreakInTry | 5 | +| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | exit BreakInTry | 7 | | BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:7:33:7:36 | access to parameter args | 5 | | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 | 2 | | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | 1 | @@ -197,18 +197,18 @@ | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | 1 | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:67:21:67:31 | ... == ... | 6 | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | 1 | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | 5 | +| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | 7 | | CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | exit Default | 6 | | CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | CompileTimeOperators.cs:10:9:10:14 | exit Sizeof | 6 | | CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:15:10:15:15 | exit Typeof | 6 | | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | exit Nameof | 6 | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | 5 | +| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | 7 | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | 9 | | CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | exit M | 1 | | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | 1 | | CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | 3 | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | 5 | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | 5 | +| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | 7 | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | 2 | | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 | 2 | | ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:38 | call to method ToString | 1 | @@ -245,7 +245,7 @@ | ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | exit M8 | 2 | | ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:24 | call to method Out | 1 | | ConditionalAccess.cs:41:26:41:38 | enter CommaJoinWith | ConditionalAccess.cs:41:26:41:38 | exit CommaJoinWith | 8 | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | exit Conditions | 5 | +| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | exit Conditions | 7 | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:5:13:5:15 | access to parameter inc | 4 | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | 2 | | Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:15 | ...++ | 3 | @@ -334,7 +334,7 @@ | Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" | 1 | | Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:48 | call to method WriteLine | 6 | | Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:48 | call to method WriteLine | 6 | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | exit ExitMethods | 5 | +| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | exit ExitMethods | 7 | | ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:8:10:8:11 | exit M1 | 8 | | ExitMethods.cs:14:10:14:11 | enter M2 | ExitMethods.cs:14:10:14:11 | exit M2 | 8 | | ExitMethods.cs:20:10:20:11 | enter M3 | ExitMethods.cs:20:10:20:11 | exit M3 | 7 | @@ -383,7 +383,7 @@ | Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | exit ToBool | 8 | | Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | exit CallToInt32 | 5 | | Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | exit Main | 20 | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | exit Finally | 5 | +| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | exit Finally | 7 | | Finally.cs:7:10:7:11 | enter M1 | Finally.cs:15:13:15:40 | call to method WriteLine | 11 | | Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | exit M1 | 1 | | Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | exit M1 (abnormal) | 1 | @@ -464,9 +464,9 @@ | Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:39:161:54 | ... == ... | 5 | | Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:42 | call to method WriteLine | 6 | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:167:17:167:37 | call to method WriteLine | 5 | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | exit ExceptionA | 5 | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | exit ExceptionB | 5 | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | exit ExceptionC | 5 | +| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | exit ExceptionA | 7 | +| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | exit ExceptionB | 7 | +| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | exit ExceptionC | 7 | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:17:180:18 | access to parameter b1 | 6 | | Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | exit M9 | 1 | | Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | exit M9 (abnormal) | 1 | @@ -511,7 +511,7 @@ | Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | exit M13 | 1 | | Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | exit M13 (abnormal) | 1 | | Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | exit M13 (normal) | 1 | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | exit Foreach | 5 | +| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | exit Foreach | 7 | | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:29:8:32 | access to parameter args | 3 | | Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | exit M1 | 2 | | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | 1 | @@ -539,19 +539,22 @@ | Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | exit M6 | 2 | | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | 1 | | Foreach.cs:38:26:38:26 | String x | Foreach.cs:39:11:39:11 | ; | 4 | +| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | exit | 14 | | Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | exit Initializers | 4 | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | exit Initializers | 16 | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | exit Initializers | 16 | +| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | exit Initializers | 7 | +| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | exit Initializers | 7 | | Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | exit M | 22 | | Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:16:18:16 | exit H | 5 | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | exit NoConstructor | 11 | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | exit Sub | 12 | +| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | exit | 9 | +| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | exit NoConstructor | 7 | +| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | exit | 6 | +| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | exit Sub | 11 | | Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | exit Sub | 9 | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | exit Sub | 14 | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | exit IndexInitializers | 5 | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | exit Compound | 5 | +| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | exit Sub | 13 | +| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | exit IndexInitializers | 7 | +| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | exit Compound | 7 | | Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:51:10:51:13 | exit Test | 105 | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | 5 | +| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | 7 | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:9:13:9:28 | ... == ... | 7 | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 | 2 | | LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | 1 | @@ -609,9 +612,9 @@ | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 | 2 | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | 1 | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | 5 | -| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | {...} | 2 | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | enter C1 | 1 | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 | 2 | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | {...} | 4 | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | 1 | | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | 1 | | MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (abnormal) | 3 | @@ -624,6 +627,9 @@ | MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:16:8:16 | enter M | 1 | | MultiImplementationA.cs:8:16:8:16 | exit M | MultiImplementationA.cs:8:16:8:16 | exit M | 1 | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | 3 | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | enter | 1 | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit | 2 | +| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:24:32:24:34 | ... = ... | 7 | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | exit get_Item (normal) | 2 | | MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | enter get_Item | 1 | | MultiImplementationA.cs:14:31:14:31 | exit get_Item | MultiImplementationA.cs:14:31:14:31 | exit get_Item | 1 | @@ -637,9 +643,9 @@ | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | exit M1 | 2 | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:18:9:18:22 | M2(...) | 2 | | MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | exit M2 | 4 | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | 14 | | MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | enter C2 | 1 | | MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | exit C2 | 1 | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | 9 | | MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | enter C2 | 1 | | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | exit C2 | 2 | | MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:27:21:29 | {...} | 3 | @@ -649,35 +655,36 @@ | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | 1 | | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | 1 | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | 2 | -| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | {...} | 2 | | MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | enter C3 | 1 | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 | 2 | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | {...} | 4 | | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | exit get_P3 | 5 | -| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | {...} | 2 | | MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | enter C4 | 1 | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 | 2 | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | {...} | 4 | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | enter M1 | 1 | | MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | exit M1 | 1 | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:9:36:10 | exit M1 (abnormal) | 4 | | MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:9:37:10 | exit M2 | 6 | -| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | {...} | 2 | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | {...} | 4 | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (normal) | 2 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | exit get_P2 (normal) | 4 | | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | exit set_P2 (normal) | 2 | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | exit M (normal) | 2 | +| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:22:32:22:34 | ... = ... | 7 | | MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationA.cs:14:31:14:31 | exit get_Item (abnormal) | 3 | | MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationA.cs:15:36:15:38 | exit get_Item (abnormal) | 4 | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationB.cs:13:60:13:62 | {...} | 1 | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:16:9:16:31 | M2(...) | 2 | | MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:9:16:31 | exit M2 | 5 | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | 12 | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | 7 | | MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:27:19:29 | {...} | 3 | | MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationA.cs:22:6:22:7 | exit ~C2 (abnormal) | 4 | | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (abnormal) | 3 | -| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | {...} | 2 | -| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | {...} | 2 | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | {...} | 4 | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | {...} | 4 | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | 2 | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | 5 | +| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | 7 | | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | 2 | | NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:9:3:10 | exit M1 | 3 | | NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:28:3:28 | 0 | 1 | @@ -715,9 +722,10 @@ | NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:16:17:16:18 | "" | 5 | | NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:17:13:17:19 | (...) ... | 5 | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | exit M6 | 4 | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | exit Partial | 12 | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | exit Partial | 12 | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | exit Patterns | 5 | +| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | exit | 10 | +| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | exit Partial | 7 | +| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | exit Partial | 7 | +| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | exit Patterns | 7 | | Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:8:18:8:23 | Int32 i1 | 8 | | Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:8:13:8:23 | [false] ... is ... | 1 | | Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:8:13:8:23 | [true] ... is ... | 1 | @@ -811,7 +819,7 @@ | Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:29:95:38 | [no-match] ... or ... | 1 | | Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:36:95:38 | access to constant B | 1 | | Patterns.cs:96:9:98:9 | {...} | Patterns.cs:97:13:97:38 | call to method WriteLine | 4 | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | exit PostDominance | 5 | +| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | exit PostDominance | 7 | | PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:5:10:5:11 | exit M1 | 7 | | PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:12:18:12:21 | null | 5 | | PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:10:10:10:11 | exit M2 | 2 | @@ -825,11 +833,11 @@ | PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:19:13:19:21 | [true] ... is ... | 1 | | PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:17:10:17:11 | exit M3 (abnormal) | 4 | | PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:17:10:17:11 | exit M3 (normal) | 4 | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | exit Qualifiers | 5 | +| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | exit Qualifiers | 7 | | Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:16:7:21 | exit Method | 4 | | Qualifiers.cs:8:23:8:34 | enter StaticMethod | Qualifiers.cs:8:23:8:34 | exit StaticMethod | 4 | | Qualifiers.cs:10:10:10:10 | enter M | Qualifiers.cs:10:10:10:10 | exit M | 58 | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | exit Switch | 5 | +| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | exit Switch | 7 | | Switch.cs:5:10:5:11 | enter M1 | Switch.cs:5:10:5:11 | exit M1 | 6 | | Switch.cs:10:10:10:11 | enter M2 | Switch.cs:14:18:14:20 | "a" | 6 | | Switch.cs:10:10:10:11 | exit M2 | Switch.cs:10:10:10:11 | exit M2 | 1 | @@ -947,20 +955,20 @@ | Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:18:171:18 | 3 | 2 | | Switch.cs:172:17:172:46 | ...; | Switch.cs:173:17:173:22 | break; | 4 | | Switch.cs:174:13:174:20 | default: | Switch.cs:176:17:176:22 | break; | 5 | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | 5 | +| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | 7 | | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:18:7:22 | Int32 j | 13 | | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | 1 | | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | 1 | | TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; | 1 | | TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | exit M | 5 | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | exit VarDecls | 5 | +| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | exit VarDecls | 7 | | VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:5:18:5:19 | exit M1 | 19 | | VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:13:12:13:13 | exit M2 | 13 | | VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:20:25:20 | access to parameter b | 11 | | VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:19:7:19:8 | exit M3 | 4 | | VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x | 1 | | VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y | 1 | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | exit C | 5 | +| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | exit C | 7 | | VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:41:28:47 | exit Dispose | 4 | | cflow.cs:5:17:5:20 | enter Main | cflow.cs:11:13:11:17 | ... > ... | 15 | | cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:5:17:5:20 | exit Main | 2 | @@ -1034,7 +1042,7 @@ | cflow.cs:127:48:127:49 | "" | cflow.cs:127:48:127:49 | "" | 1 | | cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | access to field Field | 2 | | cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | exit set_Prop | 8 | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | exit ControlFlow | 9 | +| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | exit ControlFlow | 11 | | cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:5:134:15 | exit ControlFlow | 9 | | cflow.cs:136:12:136:22 | enter ControlFlow | cflow.cs:136:12:136:22 | exit ControlFlow | 8 | | cflow.cs:138:40:138:40 | enter + | cflow.cs:138:40:138:40 | exit + | 9 | @@ -1132,17 +1140,17 @@ | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:30 | ... < ... | 3 | | cflow.cs:265:9:267:9 | {...} | cflow.cs:264:33:264:35 | ...++ | 5 | | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:275:13:275:41 | call to method WriteLine | 7 | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | exit ControlFlowSub | 5 | +| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | exit ControlFlowSub | 7 | | cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:5:284:18 | exit ControlFlowSub | 5 | | cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:5:286:18 | exit ControlFlowSub | 7 | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | exit DelegateCall | 5 | +| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | exit DelegateCall | 7 | | cflow.cs:291:12:291:12 | enter M | cflow.cs:291:12:291:12 | exit M | 6 | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | exit NegationInConstructor | 5 | +| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | exit NegationInConstructor | 7 | | cflow.cs:298:10:298:10 | enter M | cflow.cs:300:46:300:50 | ... > ... | 7 | | cflow.cs:300:44:300:51 | [false] !... | cflow.cs:300:44:300:51 | [false] !... | 1 | | cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:44:300:51 | [true] !... | 1 | | cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | exit M | 5 | | cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:64 | ... != ... | 3 | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | exit LambdaGetter | 5 | +| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | exit LambdaGetter | 7 | | cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | exit (...) => ... | 9 | | cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | exit get__getter | 4 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected index f5368b5c7e98..8240e61a4199 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected @@ -1,7 +1,9 @@ dominance | AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | {...} | -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | call to constructor Object | +| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | call to constructor Object | +| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | this access | | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | call to method | | AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | | AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:30:5:30 | access to parameter i | | AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | AccessorCalls.cs:5:23:5:25 | exit get_Item | @@ -305,8 +307,10 @@ dominance | AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:74:73:82 | (..., ...) | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:73:78:73:81 | dynamic access to element | | ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | {...} | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | call to constructor Object | +| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | call to constructor Object | +| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | this access | | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | call to method | | ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | | ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:27:3:27 | 0 | | ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | ArrayCreation.cs:3:11:3:12 | exit M1 | @@ -337,8 +341,10 @@ dominance | ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:48:9:48 | 3 | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:43:9:50 | { ..., ... } | | Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | {...} | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | call to constructor Object | +| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | call to constructor Object | +| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | this access | | Assert.cs:5:7:5:17 | exit AssertTests (normal) | Assert.cs:5:7:5:17 | exit AssertTests | +| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | call to method | | Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | exit AssertTests (normal) | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:8:5:12:5 | {...} | | Assert.cs:8:5:12:5 | {...} | Assert.cs:9:9:9:33 | ... ...; | @@ -708,8 +714,10 @@ dominance | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | {...} | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | call to constructor Object | +| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | call to constructor Object | +| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | this access | | Assignments.cs:1:7:1:17 | exit Assignments (normal) | Assignments.cs:1:7:1:17 | exit Assignments | +| Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | call to method | | Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | exit Assignments (normal) | | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:4:5:15:5 | {...} | | Assignments.cs:3:10:3:10 | exit M (normal) | Assignments.cs:3:10:3:10 | exit M | @@ -753,8 +761,10 @@ dominance | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | exit + (normal) | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:9:19:17 | return ...; | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | {...} | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | call to constructor Object | +| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | call to constructor Object | +| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | this access | | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | BreakInTry.cs:1:7:1:16 | exit BreakInTry | +| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | call to method | | BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | | BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:4:5:18:5 | {...} | | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 | @@ -839,8 +849,10 @@ dominance | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:68:21:68:26 | break; | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:21:67:31 | ... == ... | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | {...} | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | +| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | +| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | this access | | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | call to method | | CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | | CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:6:5:8:5 | {...} | | CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | CompileTimeOperators.cs:5:9:5:15 | exit Default | @@ -863,8 +875,10 @@ dominance | CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:20:12:20:17 | exit Nameof (normal) | | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:9:22:25 | return ...; | | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | {...} | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | +| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | +| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | this access | | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | call to method | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:29:5:41:5 | {...} | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | @@ -884,8 +898,10 @@ dominance | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:32:40:36 | "End" | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | {...} | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | +| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | +| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | this access | | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | call to method | | ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 | @@ -963,8 +979,10 @@ dominance | ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:70:41:78 | ... + ... | | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:70:41:83 | ... + ... | | Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | {...} | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | call to constructor Object | +| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | call to constructor Object | +| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | this access | | Conditions.cs:1:7:1:16 | exit Conditions (normal) | Conditions.cs:1:7:1:16 | exit Conditions | +| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | call to method | | Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | exit Conditions (normal) | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:4:5:9:5 | {...} | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | @@ -1266,8 +1284,10 @@ dominance | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:38:149:47 | $"..." | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:44:149:46 | {...} | | ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | {...} | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | call to constructor Object | +| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | call to constructor Object | +| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | this access | | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | ExitMethods.cs:6:7:6:17 | exit ExitMethods | +| ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | call to method | | ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | | ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:9:5:12:5 | {...} | | ExitMethods.cs:8:10:8:11 | exit M1 (normal) | ExitMethods.cs:8:10:8:11 | exit M1 | @@ -1464,8 +1484,10 @@ dominance | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func | | Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:9:25:33 | call to method ToBool | | Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | {...} | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | call to constructor Object | +| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | call to constructor Object | +| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | this access | | Finally.cs:3:14:3:20 | exit Finally (normal) | Finally.cs:3:14:3:20 | exit Finally | +| Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | call to method | | Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | exit Finally (normal) | | Finally.cs:7:10:7:11 | enter M1 | Finally.cs:8:5:17:5 | {...} | | Finally.cs:8:5:17:5 | {...} | Finally.cs:9:9:16:9 | try {...} ... | @@ -1679,16 +1701,22 @@ dominance | Finally.cs:167:17:167:38 | ...; | Finally.cs:167:35:167:36 | "" | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:37 | call to method WriteLine | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | {...} | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | call to constructor Exception | +| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | call to constructor Exception | +| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | this access | | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | exit ExceptionA | +| Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | call to method | | Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | | Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | {...} | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | call to constructor Exception | +| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | call to constructor Exception | +| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | this access | | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | Finally.cs:173:11:173:20 | exit ExceptionB | +| Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | call to method | | Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | | Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | {...} | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | call to constructor Exception | +| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | call to constructor Exception | +| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | this access | | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | Finally.cs:174:11:174:20 | exit ExceptionC | +| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | call to method | | Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:177:5:193:5 | {...} | | Finally.cs:177:5:193:5 | {...} | Finally.cs:178:9:192:9 | try {...} ... | @@ -1812,8 +1840,10 @@ dominance | Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:13 | access to parameter i | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... + ... | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | {...} | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | call to constructor Object | +| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | call to constructor Object | +| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | this access | | Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | exit Foreach | +| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | call to method | | Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | exit Foreach (normal) | | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:7:5:10:5 | {...} | | Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | exit M1 | @@ -1865,38 +1895,33 @@ dominance | Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:33:38:33 | Int32 y | | Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:38:18:38:34 | (..., ...) | | Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | +| Initializers.cs:3:7:3:18 | enter | Initializers.cs:5:9:5:9 | this access | | Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | {...} | +| Initializers.cs:3:7:3:18 | exit (normal) | Initializers.cs:3:7:3:18 | exit | | Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | exit Initializers | | Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | exit Initializers (normal) | | Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:13:5:13 | access to field H | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:13:5:13 | access to field H | -| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:6:9:6:9 | this access | | Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:6:9:6:9 | this access | | Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:17:5:17 | 1 | -| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:17:5:17 | 1 | | Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:9:5:17 | ... = ... | -| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:9:5:17 | ... = ... | -| Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:17 | ... + ... | | Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:17 | ... + ... | | Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:25:6:31 | ... = ... | -| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:25:6:31 | ... = ... | -| Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:27:6:27 | access to field H | | Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:27:6:27 | access to field H | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:8:20:8:22 | {...} | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:10:28:10:30 | {...} | +| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:3:7:3:18 | exit (normal) | | Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:31:6:31 | 2 | -| Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:31:6:31 | 2 | -| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:9:6:9 | access to property G | | Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:9:6:9 | access to property G | | Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:27:6:31 | ... + ... | -| Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:27:6:31 | ... + ... | -| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:5:9:5:9 | this access | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | call to constructor Object | +| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:20:8:22 | {...} | +| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | call to constructor Object | +| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | this access | | Initializers.cs:8:5:8:16 | exit Initializers (normal) | Initializers.cs:8:5:8:16 | exit Initializers | +| Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | call to method | | Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | exit Initializers (normal) | -| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:5:9:5:9 | this access | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | call to constructor Object | +| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:28:10:30 | {...} | +| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | call to constructor Object | +| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | this access | | Initializers.cs:10:5:10:16 | exit Initializers (normal) | Initializers.cs:10:5:10:16 | exit Initializers | +| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | call to method | | Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | exit Initializers (normal) | | Initializers.cs:12:10:12:10 | enter M | Initializers.cs:13:5:16:5 | {...} | | Initializers.cs:12:10:12:10 | exit M (normal) | Initializers.cs:12:10:12:10 | exit M | @@ -1923,25 +1948,30 @@ dominance | Initializers.cs:18:16:18:16 | exit H (normal) | Initializers.cs:18:16:18:16 | exit H | | Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:16 | exit H (normal) | | Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:20 | ... = ... | -| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:22:23:22:23 | this access | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | call to constructor Object | +| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | {...} | +| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | call to constructor Object | +| Initializers.cs:20:11:20:23 | enter | Initializers.cs:22:23:22:23 | this access | +| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | this access | +| Initializers.cs:20:11:20:23 | exit (normal) | Initializers.cs:20:11:20:23 | exit | | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | exit NoConstructor | +| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | call to method | | Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | | Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:27:22:27 | 0 | | Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:23:23:23:23 | this access | | Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:27 | ... = ... | | Initializers.cs:23:23:23:23 | this access | Initializers.cs:23:27:23:27 | 1 | -| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | {...} | +| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | exit (normal) | | Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:27 | ... = ... | +| Initializers.cs:26:11:26:13 | enter | Initializers.cs:28:13:28:13 | this access | +| Initializers.cs:26:11:26:13 | exit (normal) | Initializers.cs:26:11:26:13 | exit | | Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:17:28:17 | 2 | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:17:28:17 | 2 | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:31:24:31:33 | {...} | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:35:27:35:40 | {...} | -| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:17 | ... = ... | +| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:26:11:26:13 | exit (normal) | | Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:17 | ... = ... | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | +| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | +| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | this access | | Initializers.cs:31:9:31:11 | exit Sub (normal) | Initializers.cs:31:9:31:11 | exit Sub | -| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:28:13:28:13 | this access | +| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | call to method | +| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:24:31:33 | {...} | | Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:26:31:31 | ...; | | Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:30:31:30 | 3 | | Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:9:31:11 | exit Sub (normal) | @@ -1955,9 +1985,11 @@ dominance | Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:9:33:11 | exit Sub (normal) | | Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:31 | this access | | Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:35 | ... = ... | -| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:28:13:28:13 | this access | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | +| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:27:35:40 | {...} | +| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | +| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | this access | | Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:9:35:11 | exit Sub | +| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | call to method | | Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:29:35:38 | ...; | | Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:33:35:33 | access to parameter i | | Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:9:35:11 | exit Sub (normal) | @@ -1966,12 +1998,16 @@ dominance | Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:29:35:37 | ... = ... | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:33:35:37 | ... + ... | | Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | {...} | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | call to constructor Object | +| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | call to constructor Object | +| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | this access | | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | Initializers.cs:39:7:39:23 | exit IndexInitializers | +| Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | call to method | | Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | | Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | {...} | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | call to constructor Object | +| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | call to constructor Object | +| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | this access | | Initializers.cs:41:11:41:18 | exit Compound (normal) | Initializers.cs:41:11:41:18 | exit Compound | +| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | call to method | | Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | exit Compound (normal) | | Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:52:5:66:5 | {...} | | Initializers.cs:51:10:51:13 | exit Test (normal) | Initializers.cs:51:10:51:13 | exit Test | @@ -2078,8 +2114,10 @@ dominance | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:50:64:54 | ... + ... | | Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:46:64:61 | ... = ... | | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | {...} | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | +| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | +| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | this access | | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | call to method | | LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:8:5:13:5 | {...} | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 | @@ -2275,9 +2313,11 @@ dominance | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:31:99:31 | access to local variable x | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | {...} | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | this access | +| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationB.cs:1:7:1:8 | this access | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | call to method | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:28:6:31 | null | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationB.cs:3:22:3:22 | 0 | | MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (abnormal) | @@ -2296,6 +2336,9 @@ dominance | MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationB.cs:5:23:5:23 | 2 | | MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:23:8:32 | throw ... | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:13:16:13:16 | this access | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationB.cs:11:16:11:16 | this access | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit | | MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:20:13:20 | 0 | | MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:24:16:24:16 | this access | | MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:20 | ... = ... | @@ -2317,9 +2360,11 @@ dominance | MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:21:18:21 | 0 | | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | MultiImplementationA.cs:18:9:18:22 | exit M2 | | MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:13:16:13:16 | this access | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:22:20:31 | {...} | +| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | +| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | this access | +| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationB.cs:18:12:18:13 | this access | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | call to method | | MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:24:20:29 | ...; | | MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:28:20:28 | access to parameter i | | MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | @@ -2338,20 +2383,23 @@ dominance | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | | MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:32:24:34 | ... = ... | | MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:34:24:34 | 0 | -| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:20:22:20:31 | {...} | | MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:16:24:16 | access to property P | | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | {...} | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | this access | +| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationB.cs:25:7:25:8 | this access | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | call to method | | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:34:30:37 | null | | MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | MultiImplementationA.cs:30:21:30:23 | exit get_P3 | | MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | | MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:28:30:37 | throw ... | | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | {...} | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | this access | +| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationB.cs:30:15:30:16 | this access | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | call to method | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:14:36:28 | {...} | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationB.cs:32:17:32:17 | 0 | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:22:36:25 | null | @@ -2363,6 +2411,8 @@ dominance | MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:9:37:10 | exit M2 (abnormal) | | MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:16:37:26 | throw ...; | | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | {...} | +| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | call to method | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (normal) | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:34:4:34 | 1 | | MultiImplementationB.cs:4:27:4:35 | return ...; | MultiImplementationA.cs:7:21:7:23 | exit get_P2 (normal) | @@ -2382,7 +2432,9 @@ dominance | MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | MultiImplementationB.cs:16:9:16:31 | exit M2 | | MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | | MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:21:16:30 | throw ... | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:11:16:11:16 | this access | +| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:22:18:36 | {...} | +| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | call to method | | MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:30:18:33 | null | | MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | | MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:24:18:34 | throw ...; | @@ -2395,14 +2447,19 @@ dominance | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:50:21:59 | throw ... | | MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationB.cs:22:32:22:34 | ... = ... | | MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:22:34:22:34 | 1 | -| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:18:22:18:36 | {...} | | MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:16:22:16 | access to property P | | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | {...} | +| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | call to method | | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | {...} | +| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | call to method | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | | NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | {...} | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | call to constructor Object | +| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | call to constructor Object | +| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | this access | | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | call to method | | NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | | NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | NullCoalescing.cs:3:9:3:10 | exit M1 | @@ -2460,31 +2517,32 @@ dominance | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:9:17:24 | ... = ... | | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... | -| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationB.cs:3:16:3:16 | this access | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | +| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationB.cs:3:16:3:16 | this access | +| PartialImplementationA.cs:1:15:1:21 | exit (normal) | PartialImplementationA.cs:1:15:1:21 | exit | +| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:27:3:29 | {...} | +| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | +| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | this access | | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:12:3:18 | exit Partial | +| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | call to method | | PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | | PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:20:3:20 | 0 | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:20:3:20 | 0 | -| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:5:16:5:16 | this access | | PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:5:16:5:16 | this access | | PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:20 | ... = ... | -| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:20 | ... = ... | -| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:3:16:3:16 | this access | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | +| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:22:4:24 | {...} | +| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | +| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | this access | | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | PartialImplementationB.cs:4:12:4:18 | exit Partial | +| PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | call to method | | PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | | PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:32:5:34 | ... = ... | -| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:32:5:34 | ... = ... | | PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:34:5:34 | 0 | -| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:34:5:34 | 0 | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationA.cs:3:27:3:29 | {...} | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:4:22:4:24 | {...} | -| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | access to property P | +| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationA.cs:1:15:1:21 | exit (normal) | | PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | access to property P | | Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | {...} | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | call to constructor Object | +| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | call to constructor Object | +| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | this access | | Patterns.cs:3:7:3:14 | exit Patterns (normal) | Patterns.cs:3:7:3:14 | exit Patterns | +| Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | call to method | | Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | exit Patterns (normal) | | Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:6:5:43:5 | {...} | | Patterns.cs:5:10:5:11 | exit M1 (normal) | Patterns.cs:5:10:5:11 | exit M1 | @@ -2683,8 +2741,10 @@ dominance | Patterns.cs:97:13:97:39 | ...; | Patterns.cs:97:31:97:37 | "not C" | | Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:13:97:38 | call to method WriteLine | | PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | {...} | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | call to constructor Object | +| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | call to constructor Object | +| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | this access | | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | PostDominance.cs:3:7:3:19 | exit PostDominance | +| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | call to method | | PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | | PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:6:5:8:5 | {...} | | PostDominance.cs:5:10:5:11 | exit M1 (normal) | PostDominance.cs:5:10:5:11 | exit M1 | @@ -2718,8 +2778,10 @@ dominance | PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:27:21:27 | access to parameter s | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:9:21:28 | call to method WriteLine | | Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | {...} | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | call to constructor Object | +| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | call to constructor Object | +| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | this access | | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | Qualifiers.cs:1:7:1:16 | exit Qualifiers | +| Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | call to method | | Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | | Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:28:7:31 | null | | Qualifiers.cs:7:16:7:21 | exit Method (normal) | Qualifiers.cs:7:16:7:21 | exit Method | @@ -2785,8 +2847,10 @@ dominance | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:46 | call to method Method | | Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:9:30:46 | ... = ... | | Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | {...} | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | call to constructor Object | +| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | call to constructor Object | +| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | this access | | Switch.cs:3:7:3:12 | exit Switch (normal) | Switch.cs:3:7:3:12 | exit Switch | +| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | call to method | | Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | exit Switch (normal) | | Switch.cs:5:10:5:11 | enter M1 | Switch.cs:6:5:8:5 | {...} | | Switch.cs:5:10:5:11 | exit M1 (normal) | Switch.cs:5:10:5:11 | exit M1 | @@ -3055,8 +3119,10 @@ dominance | Switch.cs:175:17:175:48 | ...; | Switch.cs:175:42:175:46 | "def" | | Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:47 | call to method WriteLine | | TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | {...} | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | call to constructor Object | +| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | call to constructor Object | +| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | this access | | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | call to method | | TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:4:5:9:5 | {...} | | TypeAccesses.cs:3:10:3:10 | exit M (normal) | TypeAccesses.cs:3:10:3:10 | exit M | @@ -3078,8 +3144,10 @@ dominance | TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:3:10:3:10 | exit M (normal) | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:13:8:27 | Type t = ... | | VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | {...} | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | call to constructor Object | +| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | call to constructor Object | +| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | this access | | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | VarDecls.cs:3:7:3:14 | exit VarDecls | +| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | call to method | | VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | | VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:6:5:11:5 | {...} | | VarDecls.cs:5:18:5:19 | exit M1 (normal) | VarDecls.cs:5:18:5:19 | exit M1 | @@ -3127,8 +3195,10 @@ dominance | VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:28:25:28 | access to local variable y | | VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:13:25:29 | return ...; | | VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | {...} | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | call to constructor Object | +| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | call to constructor Object | +| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | this access | | VarDecls.cs:28:11:28:11 | exit C (normal) | VarDecls.cs:28:11:28:11 | exit C | +| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | call to method | | VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | exit C (normal) | | VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:51:28:53 | {...} | | VarDecls.cs:28:41:28:47 | exit Dispose (normal) | VarDecls.cs:28:41:28:47 | exit Dispose | @@ -3397,8 +3467,10 @@ dominance | cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:72 | this access | | cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:80 | ... = ... | | cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:130:5:132:5 | {...} | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | call to constructor Object | +| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | call to constructor Object | +| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | this access | | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:129:5:129:15 | exit ControlFlow | +| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | call to method | | cflow.cs:130:5:132:5 | {...} | cflow.cs:131:9:131:18 | ...; | | cflow.cs:131:9:131:13 | this access | cflow.cs:131:17:131:17 | access to parameter s | | cflow.cs:131:9:131:17 | ... = ... | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | @@ -3739,8 +3811,10 @@ dominance | cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (normal) | | cflow.cs:275:13:275:42 | ...; | cflow.cs:275:31:275:40 | "not dead" | | cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:41 | call to method WriteLine | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:24:282:27 | call to constructor ControlFlow | +| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:24:282:27 | call to constructor ControlFlow | +| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | this access | | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:5:282:18 | exit ControlFlowSub | +| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | call to method | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:31:282:33 | {...} | | cflow.cs:282:31:282:33 | {...} | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | | cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | @@ -3754,8 +3828,10 @@ dominance | cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | | cflow.cs:286:48:286:50 | {...} | cflow.cs:286:5:286:18 | exit ControlFlowSub (normal) | | cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | {...} | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | call to constructor Object | +| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | call to constructor Object | +| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | this access | | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | cflow.cs:289:7:289:18 | exit DelegateCall | +| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | call to method | | cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | | cflow.cs:291:12:291:12 | enter M | cflow.cs:291:38:291:38 | access to parameter f | | cflow.cs:291:12:291:12 | exit M (normal) | cflow.cs:291:12:291:12 | exit M | @@ -3763,8 +3839,10 @@ dominance | cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:12:291:12 | exit M (normal) | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:38:291:41 | delegate call | | cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:52:296:54 | {...} | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | call to constructor Object | +| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | call to constructor Object | +| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | this access | | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | cflow.cs:296:5:296:25 | exit NegationInConstructor | +| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | call to method | | cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | | cflow.cs:298:10:298:10 | enter M | cflow.cs:299:5:301:5 | {...} | | cflow.cs:298:10:298:10 | exit M (normal) | cflow.cs:298:10:298:10 | exit M | @@ -3782,8 +3860,10 @@ dominance | cflow.cs:300:61:300:64 | null | cflow.cs:300:56:300:64 | ... != ... | | cflow.cs:300:70:300:71 | "" | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | | cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | {...} | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | call to constructor Object | +| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | call to constructor Object | +| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | this access | | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | cflow.cs:304:7:304:18 | exit LambdaGetter | +| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | call to method | | cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | | cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | exit get__getter (normal) | | cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:307:5:310:5 | {...} | @@ -3797,9 +3877,11 @@ dominance | cflow.cs:309:9:309:17 | return ...; | cflow.cs:306:60:310:5 | exit (...) => ... (normal) | | cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:309:9:309:17 | return ...; | postDominance -| AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | call to method | +| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | this access | | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | AccessorCalls.cs:1:7:1:19 | {...} | +| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | | AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | call to constructor Object | | AccessorCalls.cs:5:23:5:25 | exit get_Item | AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | | AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | AccessorCalls.cs:5:30:5:30 | access to parameter i | @@ -4102,9 +4184,11 @@ postDominance | AccessorCalls.cs:73:78:73:78 | access to local variable d | AccessorCalls.cs:73:75:73:75 | 0 | | AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:80:73:80 | 1 | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:73:78:73:78 | access to local variable d | -| ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | call to method | +| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | this access | | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | ArrayCreation.cs:1:7:1:19 | {...} | +| ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | | ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | call to constructor Object | | ArrayCreation.cs:3:11:3:12 | exit M1 | ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | | ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | @@ -4134,9 +4218,11 @@ postDominance | ArrayCreation.cs:9:43:9:50 | { ..., ... } | ArrayCreation.cs:9:48:9:48 | 3 | | ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:33:9:40 | { ..., ... } | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:45:9:45 | 2 | -| Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | enter AssertTests | +| Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | call to method | +| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | this access | | Assert.cs:5:7:5:17 | exit AssertTests | Assert.cs:5:7:5:17 | exit AssertTests (normal) | | Assert.cs:5:7:5:17 | exit AssertTests (normal) | Assert.cs:5:7:5:17 | {...} | +| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | enter AssertTests | | Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | call to constructor Object | | Assert.cs:7:10:7:11 | exit M1 (normal) | Assert.cs:11:9:11:35 | call to method WriteLine | | Assert.cs:8:5:12:5 | {...} | Assert.cs:7:10:7:11 | enter M1 | @@ -4492,9 +4578,11 @@ postDominance | Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:25:140:26 | access to parameter b1 | | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:29:140:30 | access to parameter b2 | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | -| Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | enter Assignments | +| Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | call to method | +| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | this access | | Assignments.cs:1:7:1:17 | exit Assignments | Assignments.cs:1:7:1:17 | exit Assignments (normal) | | Assignments.cs:1:7:1:17 | exit Assignments (normal) | Assignments.cs:1:7:1:17 | {...} | +| Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | enter Assignments | | Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | call to constructor Object | | Assignments.cs:3:10:3:10 | exit M | Assignments.cs:3:10:3:10 | exit M (normal) | | Assignments.cs:3:10:3:10 | exit M (normal) | Assignments.cs:14:9:14:35 | ... += ... | @@ -4537,9 +4625,11 @@ postDominance | Assignments.cs:18:5:20:5 | {...} | Assignments.cs:17:40:17:40 | enter + | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:16:19:16 | access to parameter x | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:18:5:20:5 | {...} | -| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | enter BreakInTry | +| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to method | +| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | this access | | BreakInTry.cs:1:7:1:16 | exit BreakInTry | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | BreakInTry.cs:1:7:1:16 | {...} | +| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | enter BreakInTry | | BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | call to constructor Object | | BreakInTry.cs:3:10:3:11 | exit M1 | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:15:17:15:28 | ... == ... | @@ -4620,9 +4710,11 @@ postDominance | BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:67:17:68:26 | if (...) ... | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:28:67:31 | null | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:21:67:23 | access to local variable arg | -| CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | call to method | +| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | this access | | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | CompileTimeOperators.cs:3:7:3:26 | {...} | +| CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | | CompileTimeOperators.cs:5:9:5:15 | exit Default | CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | | CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | CompileTimeOperators.cs:7:9:7:28 | return ...; | @@ -4644,9 +4736,11 @@ postDominance | CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | | CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:21:5:23:5 | {...} | -| CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | call to method | +| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | this access | | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | {...} | +| CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:28:10:28:10 | enter M | @@ -4664,9 +4758,11 @@ postDominance | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:40:32:40:36 | "End" | | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:9:40:11 | End: | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:14:40:38 | ...; | -| ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | call to method | +| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | this access | | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | {...} | +| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | | ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | | ConditionalAccess.cs:3:12:3:13 | exit M1 | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:26:3:26 | access to parameter i | @@ -4743,9 +4839,11 @@ postDominance | ConditionalAccess.cs:41:70:41:83 | ... + ... | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | | ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:70:41:71 | access to parameter s1 | | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:70:41:78 | ... + ... | -| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | enter Conditions | +| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | call to method | +| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | this access | | Conditions.cs:1:7:1:16 | exit Conditions | Conditions.cs:1:7:1:16 | exit Conditions (normal) | | Conditions.cs:1:7:1:16 | exit Conditions (normal) | Conditions.cs:1:7:1:16 | {...} | +| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | enter Conditions | | Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | call to constructor Object | | Conditions.cs:3:10:3:19 | exit IncrOrDecr | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:7:13:7:16 | [false] !... | @@ -5040,9 +5138,11 @@ postDominance | Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:13:149:49 | ...; | | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:45:149:45 | access to local variable s | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:40:149:43 | "b = " | -| ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | enter ExitMethods | +| ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | call to method | +| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | this access | | ExitMethods.cs:6:7:6:17 | exit ExitMethods | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | ExitMethods.cs:6:7:6:17 | {...} | +| ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | enter ExitMethods | | ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | call to constructor Object | | ExitMethods.cs:8:10:8:11 | exit M1 | ExitMethods.cs:8:10:8:11 | exit M1 (normal) | | ExitMethods.cs:8:10:8:11 | exit M1 (normal) | ExitMethods.cs:11:9:11:15 | return ...; | @@ -5231,9 +5331,11 @@ postDominance | Extensions.cs:25:9:25:34 | ...; | Extensions.cs:24:9:24:45 | call to method ToBool | | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:9:25:14 | "true" | | Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:23:25:32 | access to method Parse | -| Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | enter Finally | +| Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | call to method | +| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | this access | | Finally.cs:3:14:3:20 | exit Finally | Finally.cs:3:14:3:20 | exit Finally (normal) | | Finally.cs:3:14:3:20 | exit Finally (normal) | Finally.cs:3:14:3:20 | {...} | +| Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | enter Finally | | Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | call to constructor Object | | Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:15:13:15:40 | call to method WriteLine | | Finally.cs:8:5:17:5 | {...} | Finally.cs:7:10:7:11 | enter M1 | @@ -5433,17 +5535,23 @@ postDominance | Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:167:35:167:36 | "" | | Finally.cs:167:17:167:38 | ...; | Finally.cs:166:13:168:13 | {...} | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:38 | ...; | -| Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | enter ExceptionA | +| Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | call to method | +| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | this access | | Finally.cs:172:11:172:20 | exit ExceptionA | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | {...} | +| Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | enter ExceptionA | | Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | call to constructor Exception | -| Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | enter ExceptionB | +| Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | call to method | +| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | this access | | Finally.cs:173:11:173:20 | exit ExceptionB | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | Finally.cs:173:11:173:20 | {...} | +| Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | enter ExceptionB | | Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | call to constructor Exception | -| Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | enter ExceptionC | +| Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | call to method | +| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | this access | | Finally.cs:174:11:174:20 | exit ExceptionC | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | Finally.cs:174:11:174:20 | {...} | +| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | enter ExceptionC | | Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | call to constructor Exception | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:21:186:22 | access to parameter b2 | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:190:21:190:22 | access to parameter b1 | @@ -5560,9 +5668,11 @@ postDominance | Finally.cs:272:13:272:18 | ... = ... | Finally.cs:272:13:272:18 | ... + ... | | Finally.cs:272:13:272:19 | ...; | Finally.cs:271:13:271:34 | call to method WriteLine | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:13 | access to parameter i | -| Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | enter Foreach | +| Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | call to method | +| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | this access | | Foreach.cs:4:7:4:13 | exit Foreach | Foreach.cs:4:7:4:13 | exit Foreach (normal) | | Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | {...} | +| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | enter Foreach | | Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | call to constructor Object | | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | exit M1 (normal) | | Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | @@ -5614,39 +5724,34 @@ postDominance | Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:38:26:38:26 | String x | | Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:37:5:40:5 | {...} | | Foreach.cs:39:11:39:11 | ; | Foreach.cs:38:18:38:34 | (..., ...) | +| Initializers.cs:3:7:3:18 | exit | Initializers.cs:3:7:3:18 | exit (normal) | +| Initializers.cs:3:7:3:18 | exit (normal) | Initializers.cs:6:25:6:31 | ... = ... | | Initializers.cs:3:7:3:18 | exit Initializers | Initializers.cs:3:7:3:18 | exit Initializers (normal) | | Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | {...} | | Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | enter Initializers | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:8:5:8:16 | call to constructor Object | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:10:5:10:16 | call to constructor Object | +| Initializers.cs:5:9:5:9 | this access | Initializers.cs:3:7:3:18 | enter | | Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:5:13:5:17 | ... + ... | -| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:5:13:5:17 | ... + ... | -| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:9:5:9 | this access | | Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:9:5:9 | this access | | Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:17:5:17 | 1 | -| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:17:5:17 | 1 | | Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:13 | access to field H | -| Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:13 | access to field H | -| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:27:6:31 | ... + ... | | Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:27:6:31 | ... + ... | | Initializers.cs:6:9:6:9 | this access | Initializers.cs:5:9:5:17 | ... = ... | -| Initializers.cs:6:9:6:9 | this access | Initializers.cs:5:9:5:17 | ... = ... | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:6:9:6:9 | access to property G | | Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:6:9:6:9 | access to property G | | Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:9:6:9 | this access | -| Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:9:6:9 | this access | -| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:31:6:31 | 2 | | Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:31:6:31 | 2 | | Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:27:6:27 | access to field H | -| Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:27:6:27 | access to field H | -| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | enter Initializers | +| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | call to method | +| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | this access | | Initializers.cs:8:5:8:16 | exit Initializers | Initializers.cs:8:5:8:16 | exit Initializers (normal) | | Initializers.cs:8:5:8:16 | exit Initializers (normal) | Initializers.cs:8:20:8:22 | {...} | -| Initializers.cs:8:20:8:22 | {...} | Initializers.cs:6:25:6:31 | ... = ... | -| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | enter Initializers | +| Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | enter Initializers | +| Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | call to constructor Object | +| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | call to method | +| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | this access | | Initializers.cs:10:5:10:16 | exit Initializers | Initializers.cs:10:5:10:16 | exit Initializers (normal) | | Initializers.cs:10:5:10:16 | exit Initializers (normal) | Initializers.cs:10:28:10:30 | {...} | -| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:6:25:6:31 | ... = ... | +| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | enter Initializers | +| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | call to constructor Object | | Initializers.cs:12:10:12:10 | exit M | Initializers.cs:12:10:12:10 | exit M (normal) | | Initializers.cs:12:10:12:10 | exit M (normal) | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | | Initializers.cs:13:5:16:5 | {...} | Initializers.cs:12:10:12:10 | enter M | @@ -5672,26 +5777,31 @@ postDominance | Initializers.cs:18:16:18:16 | exit H (normal) | Initializers.cs:18:16:18:20 | ... = ... | | Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:20:18:20 | 1 | | Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:16 | enter H | -| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | enter NoConstructor | +| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | call to method | +| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | this access | +| Initializers.cs:20:11:20:23 | exit | Initializers.cs:20:11:20:23 | exit (normal) | +| Initializers.cs:20:11:20:23 | exit (normal) | Initializers.cs:23:23:23:27 | ... = ... | | Initializers.cs:20:11:20:23 | exit NoConstructor | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | {...} | -| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:23:23:23:27 | ... = ... | -| Initializers.cs:22:23:22:23 | this access | Initializers.cs:20:11:20:23 | call to constructor Object | +| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | enter NoConstructor | +| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | call to constructor Object | +| Initializers.cs:22:23:22:23 | this access | Initializers.cs:20:11:20:23 | enter | | Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:22:27:22:27 | 0 | | Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:23 | this access | | Initializers.cs:23:23:23:23 | this access | Initializers.cs:22:23:22:27 | ... = ... | | Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:23:27:23:27 | 1 | | Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:23 | this access | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:28:17:28:17 | 2 | +| Initializers.cs:26:11:26:13 | exit | Initializers.cs:26:11:26:13 | exit (normal) | +| Initializers.cs:26:11:26:13 | exit (normal) | Initializers.cs:28:13:28:17 | ... = ... | +| Initializers.cs:28:13:28:13 | this access | Initializers.cs:26:11:26:13 | enter | | Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:28:17:28:17 | 2 | | Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:13 | this access | -| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:13 | this access | +| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:9:31:11 | this access | | Initializers.cs:31:9:31:11 | exit Sub | Initializers.cs:31:9:31:11 | exit Sub (normal) | | Initializers.cs:31:9:31:11 | exit Sub (normal) | Initializers.cs:31:26:31:30 | ... = ... | -| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:9:31:11 | enter Sub | -| Initializers.cs:31:24:31:33 | {...} | Initializers.cs:28:13:28:17 | ... = ... | +| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | enter Sub | +| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:9:31:11 | call to method | +| Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | | Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:26:31:31 | ...; | | Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:30:31:30 | 3 | | Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:24:31:33 | {...} | @@ -5704,23 +5814,29 @@ postDominance | Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:35:33:35 | access to parameter i | | Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:29:33:38 | {...} | | Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:31 | this access | -| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | enter Sub | +| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to method | +| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | this access | | Initializers.cs:35:9:35:11 | exit Sub | Initializers.cs:35:9:35:11 | exit Sub (normal) | | Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:29:35:37 | ... = ... | -| Initializers.cs:35:27:35:40 | {...} | Initializers.cs:28:13:28:17 | ... = ... | +| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | enter Sub | +| Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | | Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:38 | ...; | | Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:33:35:37 | ... + ... | | Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:27:35:40 | {...} | | Initializers.cs:35:33:35:33 | access to parameter i | Initializers.cs:35:29:35:29 | this access | | Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:37:35:37 | access to parameter j | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:33:35:33 | access to parameter i | -| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | enter IndexInitializers | +| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | call to method | +| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | this access | | Initializers.cs:39:7:39:23 | exit IndexInitializers | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | Initializers.cs:39:7:39:23 | {...} | +| Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | enter IndexInitializers | | Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | call to constructor Object | -| Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | enter Compound | +| Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | call to method | +| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | this access | | Initializers.cs:41:11:41:18 | exit Compound | Initializers.cs:41:11:41:18 | exit Compound (normal) | | Initializers.cs:41:11:41:18 | exit Compound (normal) | Initializers.cs:41:11:41:18 | {...} | +| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | enter Compound | | Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | call to constructor Object | | Initializers.cs:51:10:51:13 | exit Test | Initializers.cs:51:10:51:13 | exit Test (normal) | | Initializers.cs:51:10:51:13 | exit Test (normal) | Initializers.cs:57:13:65:9 | Compound compound = ... | @@ -5826,9 +5942,11 @@ postDominance | Initializers.cs:64:50:64:54 | ... + ... | Initializers.cs:64:54:64:54 | 0 | | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:50:64:50 | access to parameter i | | Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:50:64:54 | ... + ... | -| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | call to method | +| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | this access | | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | LoopUnrolling.cs:5:7:5:19 | {...} | +| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | | LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | | LoopUnrolling.cs:7:10:7:11 | exit M1 | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:10:13:10:19 | return ...; | @@ -6021,6 +6139,8 @@ postDominance | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:99:31:99:31 | access to local variable x | | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:98:9:100:9 | {...} | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:13:99:33 | ...; | +| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to method | +| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | this access | | MultiImplementationA.cs:4:7:4:8 | exit C1 | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | {...} | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationB.cs:1:7:1:8 | {...} | @@ -6039,7 +6159,9 @@ postDominance | MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | MultiImplementationA.cs:8:23:8:32 | throw ... | | MultiImplementationA.cs:8:16:8:16 | exit M (normal) | MultiImplementationB.cs:5:23:5:23 | 2 | | MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:29:8:32 | null | -| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | +| MultiImplementationA.cs:11:7:11:8 | exit | MultiImplementationA.cs:11:7:11:8 | exit (normal) | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:24:32:24:34 | ... = ... | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationB.cs:22:32:22:34 | ... = ... | | MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:13:20:13:20 | 0 | | MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:16 | this access | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | enter get_Item | @@ -6060,10 +6182,12 @@ postDominance | MultiImplementationA.cs:18:9:18:22 | exit M2 | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | MultiImplementationA.cs:18:21:18:21 | 0 | | MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | enter M2 | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | enter C2 | +| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to method | +| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | this access | | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | MultiImplementationB.cs:18:24:18:34 | throw ...; | | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | MultiImplementationA.cs:20:24:20:28 | ... = ... | -| MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:24:32:24:34 | ... = ... | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | enter C2 | +| MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | | MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:29 | ...; | | MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:28:20:28 | access to parameter i | | MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:22:20:31 | {...} | @@ -6083,6 +6207,8 @@ postDominance | MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:13:16:13:20 | ... = ... | | MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:24:16:24:16 | access to property P | | MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:16:24:16 | this access | +| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to method | +| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | this access | | MultiImplementationA.cs:28:7:28:8 | exit C3 | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | {...} | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationB.cs:25:7:25:8 | {...} | @@ -6091,6 +6217,8 @@ postDominance | MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | MultiImplementationA.cs:30:28:30:37 | throw ... | | MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:34:30:37 | null | | MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | +| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to method | +| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | this access | | MultiImplementationA.cs:34:15:34:16 | exit C4 | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | {...} | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationB.cs:30:15:30:16 | {...} | @@ -6104,6 +6232,8 @@ postDominance | MultiImplementationA.cs:37:14:37:28 | {...} | MultiImplementationA.cs:37:9:37:10 | enter M2 | | MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:22:37:25 | null | | MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:14:37:28 | {...} | +| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to method | +| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | this access | | MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | enter get_P2 | @@ -6111,7 +6241,6 @@ postDominance | MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationB.cs:4:25:4:37 | {...} | | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | enter set_P2 | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | enter M | -| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | | MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationB.cs:11:20:11:20 | 1 | | MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:16:11:16 | this access | | MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationB.cs:12:37:12:40 | null | @@ -6122,7 +6251,9 @@ postDominance | MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | MultiImplementationB.cs:16:21:16:30 | throw ... | | MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:27:16:30 | null | | MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:9:16:31 | enter M2 | -| MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:22:32:22:34 | ... = ... | +| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to method | +| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | this access | +| MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | | MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationB.cs:18:30:18:33 | null | | MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:22:18:36 | {...} | | MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | MultiImplementationB.cs:19:24:19:24 | 1 | @@ -6134,12 +6265,18 @@ postDominance | MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:11:16:11:20 | ... = ... | | MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:22:16:22:16 | access to property P | | MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:16:22:16 | this access | +| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to method | +| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | this access | | MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to method | +| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | this access | | MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | enter M1 | -| NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | call to method | +| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | this access | | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | NullCoalescing.cs:1:7:1:20 | {...} | +| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | | NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | call to constructor Object | | NullCoalescing.cs:3:9:3:10 | exit M1 | NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | | NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | NullCoalescing.cs:3:23:3:28 | ... ?? ... | @@ -6195,31 +6332,32 @@ postDominance | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:19 | (...) ... | | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:9:17:25 | ...; | -| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | enter Partial | +| PartialImplementationA.cs:1:15:1:21 | exit | PartialImplementationA.cs:1:15:1:21 | exit (normal) | +| PartialImplementationA.cs:1:15:1:21 | exit (normal) | PartialImplementationB.cs:5:32:5:34 | ... = ... | +| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to method | +| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | this access | | PartialImplementationA.cs:3:12:3:18 | exit Partial | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:27:3:29 | {...} | -| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationB.cs:5:32:5:34 | ... = ... | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | +| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | enter Partial | +| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | +| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationA.cs:1:15:1:21 | enter | | PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:3:20:3:20 | 0 | -| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:3:20:3:20 | 0 | -| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:16 | this access | | PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:16 | this access | -| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | enter Partial | +| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | call to method | +| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | this access | | PartialImplementationB.cs:4:12:4:18 | exit Partial | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | PartialImplementationB.cs:4:22:4:24 | {...} | -| PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:5:32:5:34 | ... = ... | +| PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | enter Partial | +| PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | | PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:34:5:34 | 0 | -| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:34:5:34 | 0 | -| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:3:16:3:20 | ... = ... | | PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:3:16:3:20 | ... = ... | | PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:5:16:5:16 | access to property P | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:5:16:5:16 | access to property P | -| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | this access | | PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | this access | -| Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | enter Patterns | +| Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | call to method | +| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | this access | | Patterns.cs:3:7:3:14 | exit Patterns | Patterns.cs:3:7:3:14 | exit Patterns (normal) | | Patterns.cs:3:7:3:14 | exit Patterns (normal) | Patterns.cs:3:7:3:14 | {...} | +| Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | enter Patterns | | Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | call to constructor Object | | Patterns.cs:5:10:5:11 | exit M1 | Patterns.cs:5:10:5:11 | exit M1 (normal) | | Patterns.cs:5:10:5:11 | exit M1 (normal) | Patterns.cs:40:17:40:17 | access to local variable o | @@ -6404,9 +6542,11 @@ postDominance | Patterns.cs:97:13:97:38 | call to method WriteLine | Patterns.cs:97:31:97:37 | "not C" | | Patterns.cs:97:13:97:39 | ...; | Patterns.cs:96:9:98:9 | {...} | | Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:13:97:39 | ...; | -| PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | enter PostDominance | +| PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | call to method | +| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | this access | | PostDominance.cs:3:7:3:19 | exit PostDominance | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | PostDominance.cs:3:7:3:19 | {...} | +| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | enter PostDominance | | PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | call to constructor Object | | PostDominance.cs:5:10:5:11 | exit M1 | PostDominance.cs:5:10:5:11 | exit M1 (normal) | | PostDominance.cs:5:10:5:11 | exit M1 (normal) | PostDominance.cs:7:9:7:28 | call to method WriteLine | @@ -6437,9 +6577,11 @@ postDominance | PostDominance.cs:21:9:21:28 | call to method WriteLine | PostDominance.cs:21:27:21:27 | access to parameter s | | PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:19:13:19:21 | [false] ... is ... | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:9:21:29 | ...; | -| Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | enter Qualifiers | +| Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | call to method | +| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | this access | | Qualifiers.cs:1:7:1:16 | exit Qualifiers | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | Qualifiers.cs:1:7:1:16 | {...} | +| Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | enter Qualifiers | | Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | call to constructor Object | | Qualifiers.cs:7:16:7:21 | exit Method | Qualifiers.cs:7:16:7:21 | exit Method (normal) | | Qualifiers.cs:7:16:7:21 | exit Method (normal) | Qualifiers.cs:7:28:7:31 | null | @@ -6504,9 +6646,11 @@ postDominance | Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:29:9:29:46 | ... = ... | | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:9:30:47 | ...; | | Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | -| Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | enter Switch | +| Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | call to method | +| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | this access | | Switch.cs:3:7:3:12 | exit Switch | Switch.cs:3:7:3:12 | exit Switch (normal) | | Switch.cs:3:7:3:12 | exit Switch (normal) | Switch.cs:3:7:3:12 | {...} | +| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | enter Switch | | Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | call to constructor Object | | Switch.cs:5:10:5:11 | exit M1 | Switch.cs:5:10:5:11 | exit M1 (normal) | | Switch.cs:5:10:5:11 | exit M1 (normal) | Switch.cs:7:17:7:17 | access to parameter o | @@ -6756,9 +6900,11 @@ postDominance | Switch.cs:175:17:175:48 | ...; | Switch.cs:174:13:174:20 | default: | | Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:48 | ...; | | Switch.cs:176:17:176:22 | break; | Switch.cs:175:17:175:47 | call to method WriteLine | -| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to method | +| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | this access | | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | {...} | +| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | | TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | call to constructor Object | | TypeAccesses.cs:3:10:3:10 | exit M | TypeAccesses.cs:3:10:3:10 | exit M (normal) | | TypeAccesses.cs:3:10:3:10 | exit M (normal) | TypeAccesses.cs:8:13:8:27 | Type t = ... | @@ -6779,9 +6925,11 @@ postDominance | TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:7:25:7:25 | ; | | TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:8:17:8:27 | typeof(...) | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:9:8:28 | ... ...; | -| VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | enter VarDecls | +| VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | call to method | +| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | this access | | VarDecls.cs:3:7:3:14 | exit VarDecls | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | VarDecls.cs:3:7:3:14 | {...} | +| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | enter VarDecls | | VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | call to constructor Object | | VarDecls.cs:5:18:5:19 | exit M1 | VarDecls.cs:5:18:5:19 | exit M1 (normal) | | VarDecls.cs:5:18:5:19 | exit M1 (normal) | VarDecls.cs:9:13:9:29 | return ...; | @@ -6828,9 +6976,11 @@ postDominance | VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:24:31:24:41 | C y = ... | | VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:24:25:24 | access to local variable x | | VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:28:25:28 | access to local variable y | -| VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | enter C | +| VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | call to method | +| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | this access | | VarDecls.cs:28:11:28:11 | exit C | VarDecls.cs:28:11:28:11 | exit C (normal) | | VarDecls.cs:28:11:28:11 | exit C (normal) | VarDecls.cs:28:11:28:11 | {...} | +| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | enter C | | VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | call to constructor Object | | VarDecls.cs:28:41:28:47 | exit Dispose | VarDecls.cs:28:41:28:47 | exit Dispose (normal) | | VarDecls.cs:28:41:28:47 | exit Dispose (normal) | VarDecls.cs:28:51:28:53 | {...} | @@ -7087,9 +7237,11 @@ postDominance | cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:76:127:80 | access to parameter value | | cflow.cs:127:68:127:81 | ...; | cflow.cs:127:66:127:83 | {...} | | cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:72 | this access | -| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | enter ControlFlow | +| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | call to method | +| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | this access | | cflow.cs:129:5:129:15 | exit ControlFlow | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:131:9:131:17 | ... = ... | +| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | enter ControlFlow | | cflow.cs:130:5:132:5 | {...} | cflow.cs:129:5:129:15 | call to constructor Object | | cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:18 | ...; | | cflow.cs:131:9:131:17 | ... = ... | cflow.cs:131:17:131:17 | access to parameter s | @@ -7421,9 +7573,11 @@ postDominance | cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:275:31:275:40 | "not dead" | | cflow.cs:275:13:275:42 | ...; | cflow.cs:274:9:276:9 | {...} | | cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:42 | ...; | +| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:5:282:18 | this access | | cflow.cs:282:5:282:18 | exit ControlFlowSub | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:31:282:33 | {...} | -| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:5:282:18 | enter ControlFlowSub | +| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | enter ControlFlowSub | +| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:5:282:18 | call to method | | cflow.cs:282:31:282:33 | {...} | cflow.cs:282:24:282:27 | call to constructor ControlFlow | | cflow.cs:284:5:284:18 | exit ControlFlowSub | cflow.cs:284:5:284:18 | exit ControlFlowSub (normal) | | cflow.cs:284:5:284:18 | exit ControlFlowSub (normal) | cflow.cs:284:39:284:41 | {...} | @@ -7435,18 +7589,22 @@ postDominance | cflow.cs:286:34:286:34 | access to parameter i | cflow.cs:286:5:286:18 | enter ControlFlowSub | | cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:34:286:34 | access to parameter i | | cflow.cs:286:48:286:50 | {...} | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | -| cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | enter DelegateCall | +| cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | call to method | +| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | this access | | cflow.cs:289:7:289:18 | exit DelegateCall | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | cflow.cs:289:7:289:18 | {...} | +| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | enter DelegateCall | | cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | call to constructor Object | | cflow.cs:291:12:291:12 | exit M | cflow.cs:291:12:291:12 | exit M (normal) | | cflow.cs:291:12:291:12 | exit M (normal) | cflow.cs:291:38:291:41 | delegate call | | cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:12:291:12 | enter M | | cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:40:291:40 | 0 | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:38:291:38 | access to parameter f | -| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | enter NegationInConstructor | +| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | call to method | +| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | this access | | cflow.cs:296:5:296:25 | exit NegationInConstructor | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | cflow.cs:296:52:296:54 | {...} | +| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | enter NegationInConstructor | | cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | call to constructor Object | | cflow.cs:298:10:298:10 | exit M | cflow.cs:298:10:298:10 | exit M (normal) | | cflow.cs:298:10:298:10 | exit M (normal) | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | @@ -7463,9 +7621,11 @@ postDominance | cflow.cs:300:56:300:64 | ... != ... | cflow.cs:300:61:300:64 | null | | cflow.cs:300:61:300:64 | null | cflow.cs:300:56:300:56 | access to parameter s | | cflow.cs:300:70:300:71 | "" | cflow.cs:300:44:300:64 | ... && ... | -| cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | enter LambdaGetter | +| cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | call to method | +| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | this access | | cflow.cs:304:7:304:18 | exit LambdaGetter | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | cflow.cs:304:7:304:18 | {...} | +| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | enter LambdaGetter | | cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | call to constructor Object | | cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | enter get__getter | | cflow.cs:306:60:310:5 | exit (...) => ... | cflow.cs:306:60:310:5 | exit (...) => ... (normal) | @@ -9459,12 +9619,15 @@ blockDominance | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:26:38:26 | String x | | Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:26:38:26 | String x | +| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | enter | | Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | enter Initializers | | Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | enter Initializers | | Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | enter Initializers | | Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | enter M | | Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:16:18:16 | enter H | +| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | enter | | Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | enter NoConstructor | +| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | enter | | Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | enter Sub | | Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | enter Sub | | Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | enter Sub | @@ -9619,12 +9782,12 @@ blockDominance | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:22:97:22 | String x | -| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | enter C1 | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | this access | +| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationB.cs:1:7:1:8 | this access | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | this access | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:28:6:31 | null | @@ -9649,6 +9812,12 @@ blockDominance | MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationB.cs:5:23:5:23 | 2 | | MultiImplementationA.cs:8:16:8:16 | exit M | MultiImplementationA.cs:8:16:8:16 | exit M | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:29:8:32 | null | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | enter | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | exit (normal) | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:13:16:13:16 | this access | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationB.cs:11:16:11:16 | this access | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit (normal) | +| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | this access | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | access to parameter i | | MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | access to parameter i | | MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | enter get_Item | @@ -9674,12 +9843,12 @@ blockDominance | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:17:5:19:5 | {...} | | MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | enter M2 | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | | MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | enter C2 | | MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | exit C2 | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | this access | +| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationB.cs:18:12:18:13 | this access | | MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | exit C2 | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | this access | | MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | enter C2 | | MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | | MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:24:21:24 | 0 | @@ -9698,19 +9867,19 @@ blockDominance | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationB.cs:21:56:21:59 | null | | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:50:23:53 | null | -| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | | MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | enter C3 | | MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | this access | +| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationB.cs:25:7:25:8 | this access | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | this access | | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | -| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | | MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | enter C4 | | MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | this access | +| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationB.cs:30:15:30:16 | this access | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | this access | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | enter M1 | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | exit M1 | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:14:36:28 | {...} | @@ -9718,22 +9887,23 @@ blockDominance | MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | exit M1 | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:14:36:28 | {...} | | MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:9:37:10 | enter M2 | -| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | this access | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationB.cs:3:22:3:22 | 0 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:25:4:37 | {...} | | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationB.cs:4:43:4:45 | {...} | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationB.cs:5:23:5:23 | 2 | +| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:16:11:16 | this access | | MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationB.cs:12:37:12:40 | null | | MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:40:13:54 | {...} | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationB.cs:13:60:13:62 | {...} | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:15:5:17:5 | {...} | | MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:9:16:31 | enter M2 | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | this access | | MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:24:19:24 | 1 | | MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationB.cs:20:11:20:25 | {...} | | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:56:21:59 | null | -| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | -| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | this access | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | this access | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:17:32:17 | 0 | | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | enter M1 | @@ -9820,6 +9990,7 @@ blockDominance | NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... | | NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | +| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | enter | | PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | enter Partial | | PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | enter Partial | | Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | enter Patterns | @@ -13132,12 +13303,15 @@ postBlockDominance | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:26:38:26 | String x | | Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:26:38:26 | String x | +| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | enter | | Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | enter Initializers | | Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | enter Initializers | | Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | enter Initializers | | Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | enter M | | Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:16:18:16 | enter H | +| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | enter | | Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | enter NoConstructor | +| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | enter | | Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | enter Sub | | Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | enter Sub | | Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | enter Sub | @@ -13282,12 +13456,12 @@ postBlockDominance | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:22:97:22 | String x | -| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | enter C1 | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | enter C1 | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | this access | +| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationB.cs:1:7:1:8 | this access | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | this access | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | | MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:28:6:31 | null | @@ -13300,6 +13474,12 @@ postBlockDominance | MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:16:8:16 | enter M | | MultiImplementationA.cs:8:16:8:16 | exit M | MultiImplementationA.cs:8:16:8:16 | exit M | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:29:8:32 | null | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | enter | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | enter | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit (normal) | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:13:16:13:16 | this access | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationB.cs:11:16:11:16 | this access | +| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | this access | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | access to parameter i | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | enter get_Item | | MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | enter get_Item | @@ -13321,10 +13501,10 @@ postBlockDominance | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationB.cs:15:5:17:5 | {...} | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:17:5:19:5 | {...} | | MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | enter M2 | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | enter C2 | | MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | enter C2 | | MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | exit C2 | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | enter C2 | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | this access | | MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | enter C2 | | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | enter C2 | | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | @@ -13339,24 +13519,24 @@ postBlockDominance | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:50:23:53 | null | -| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | | MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | enter C3 | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | enter C3 | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | this access | +| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationB.cs:25:7:25:8 | this access | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | this access | | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | -| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | | MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | enter C4 | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | enter C4 | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | this access | +| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationB.cs:30:15:30:16 | this access | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | this access | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | enter M1 | | MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | exit M1 | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:14:36:28 | {...} | | MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:9:37:10 | enter M2 | -| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | this access | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationB.cs:3:22:3:22 | 0 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | enter get_P2 | @@ -13365,17 +13545,18 @@ postBlockDominance | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationB.cs:4:43:4:45 | {...} | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | enter M | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationB.cs:5:23:5:23 | 2 | +| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:16:11:16 | this access | | MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationB.cs:12:37:12:40 | null | | MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:40:13:54 | {...} | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationB.cs:13:60:13:62 | {...} | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:15:5:17:5 | {...} | | MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:9:16:31 | enter M2 | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | this access | | MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:24:19:24 | 1 | | MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationB.cs:20:11:20:25 | {...} | | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:56:21:59 | null | -| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | -| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | this access | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | this access | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | enter M1 | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:17:32:17 | 0 | | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | @@ -13465,6 +13646,7 @@ postBlockDominance | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:15:31:15:31 | 0 | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | +| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | enter | | PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | enter Partial | | PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | enter Partial | | Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | enter Patterns | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected index 4a4631e454d5..14dcdb56b269 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected @@ -1,8 +1,10 @@ nodeEnclosing | AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | AccessorCalls | | AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | AccessorCalls | | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | AccessorCalls.cs:1:7:1:19 | AccessorCalls | | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | AccessorCalls.cs:1:7:1:19 | AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | AccessorCalls | | AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | AccessorCalls | | AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | get_Item | | AccessorCalls.cs:5:23:5:25 | exit get_Item | AccessorCalls.cs:5:23:5:25 | get_Item | @@ -319,9 +321,11 @@ nodeEnclosing | AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:66:10:66:11 | M9 | | ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | ArrayCreation | | ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | ArrayCreation | | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | ArrayCreation.cs:1:7:1:19 | ArrayCreation | | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | ArrayCreation.cs:1:7:1:19 | ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | ArrayCreation | | ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | ArrayCreation | | ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:11:3:12 | M1 | | ArrayCreation.cs:3:11:3:12 | exit M1 | ArrayCreation.cs:3:11:3:12 | M1 | @@ -356,9 +360,11 @@ nodeEnclosing | ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:12:9:13 | M4 | | Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | AssertTests | +| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:5:7:5:17 | exit AssertTests | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:5:7:5:17 | exit AssertTests (normal) | Assert.cs:5:7:5:17 | AssertTests | +| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | M1 | | Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | M1 | @@ -777,9 +783,11 @@ nodeEnclosing | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:138:10:138:12 | M13 | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | M13 | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | Assignments | +| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:1:7:1:17 | exit Assignments | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:1:7:1:17 | exit Assignments (normal) | Assignments.cs:1:7:1:17 | Assignments | +| Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | M | | Assignments.cs:3:10:3:10 | exit M | Assignments.cs:3:10:3:10 | M | @@ -826,9 +834,11 @@ nodeEnclosing | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | + | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:17:40:17:40 | + | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | BreakInTry | +| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | exit BreakInTry | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | BreakInTry.cs:1:7:1:16 | BreakInTry | +| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:3:10:3:11 | exit M1 | BreakInTry.cs:3:10:3:11 | M1 | @@ -917,9 +927,11 @@ nodeEnclosing | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:56:10:56:11 | M4 | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | Default | | CompileTimeOperators.cs:5:9:5:15 | exit Default | CompileTimeOperators.cs:5:9:5:15 | Default | @@ -946,9 +958,11 @@ nodeEnclosing | CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:20:12:20:17 | Nameof | | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:20:12:20:17 | Nameof | | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | M | @@ -970,9 +984,11 @@ nodeEnclosing | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:28:10:28:10 | M | | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | M1 | | ConditionalAccess.cs:3:12:3:13 | exit M1 | ConditionalAccess.cs:3:12:3:13 | M1 | @@ -1064,9 +1080,11 @@ nodeEnclosing | ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith | | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith | | Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | Conditions | +| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:1:7:1:16 | exit Conditions | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:1:7:1:16 | exit Conditions (normal) | Conditions.cs:1:7:1:16 | Conditions | +| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:3:10:3:19 | exit IncrOrDecr | Conditions.cs:3:10:3:19 | IncrOrDecr | @@ -1384,9 +1402,11 @@ nodeEnclosing | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:143:10:143:12 | M11 | | ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | ExitMethods | +| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | ExitMethods | | ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | ExitMethods | | ExitMethods.cs:6:7:6:17 | exit ExitMethods | ExitMethods.cs:6:7:6:17 | ExitMethods | | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | ExitMethods.cs:6:7:6:17 | ExitMethods | +| ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | ExitMethods | | ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | ExitMethods | | ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:8:10:8:11 | M1 | | ExitMethods.cs:8:10:8:11 | exit M1 | ExitMethods.cs:8:10:8:11 | M1 | @@ -1616,9 +1636,11 @@ nodeEnclosing | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:20:17:20:20 | Main | | Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | Finally | +| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | Finally | | Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | Finally | | Finally.cs:3:14:3:20 | exit Finally | Finally.cs:3:14:3:20 | Finally | | Finally.cs:3:14:3:20 | exit Finally (normal) | Finally.cs:3:14:3:20 | Finally | +| Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | Finally | | Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | Finally | | Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | M1 | | Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | M1 | @@ -1852,19 +1874,25 @@ nodeEnclosing | Finally.cs:167:17:167:38 | ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:167:35:167:36 | "" | Finally.cs:147:10:147:11 | M8 | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | exit ExceptionA | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | ExceptionB | | Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | ExceptionB | | Finally.cs:173:11:173:20 | exit ExceptionB | Finally.cs:173:11:173:20 | ExceptionB | | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | ExceptionB | | Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | ExceptionB | | Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | ExceptionC | +| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | ExceptionC | | Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | ExceptionC | | Finally.cs:174:11:174:20 | exit ExceptionC | Finally.cs:174:11:174:20 | ExceptionC | | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | Finally.cs:174:11:174:20 | ExceptionC | +| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | ExceptionC | | Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | ExceptionC | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | M9 | | Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | M9 | @@ -1997,9 +2025,11 @@ nodeEnclosing | Finally.cs:272:13:272:19 | ...; | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:18:272:18 | 3 | Finally.cs:263:10:263:12 | M13 | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | Foreach | +| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | exit Foreach | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | Foreach | +| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | M1 | | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | M1 | @@ -2058,41 +2088,37 @@ nodeEnclosing | Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:39:11:39:11 | ; | Foreach.cs:36:10:36:11 | M6 | +| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | | | Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:3:7:3:18 | exit | Initializers.cs:3:7:3:18 | | +| Initializers.cs:3:7:3:18 | exit (normal) | Initializers.cs:3:7:3:18 | | | Initializers.cs:3:7:3:18 | exit Initializers | Initializers.cs:3:7:3:18 | Initializers | | Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | Initializers | | Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | Initializers | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:5:17:5:17 | 1 | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:5:17:5:17 | 1 | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:6:9:6:9 | this access | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:6:9:6:9 | this access | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:6:31:6:31 | 2 | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:6:31:6:31 | 2 | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:5:9:5:9 | this access | Initializers.cs:3:7:3:18 | | +| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:3:7:3:18 | | +| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:5:17:5:17 | 1 | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:9:6:9 | this access | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:31:6:31 | 2 | Initializers.cs:3:7:3:18 | | | Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:8:5:8:16 | exit Initializers | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:8:5:8:16 | exit Initializers (normal) | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:10:5:10:16 | exit Initializers | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:10:5:10:16 | exit Initializers (normal) | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | M | | Initializers.cs:12:10:12:10 | exit M | Initializers.cs:12:10:12:10 | M | @@ -2117,25 +2143,32 @@ nodeEnclosing | Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:12:10:12:10 | M | | Initializers.cs:15:59:15:60 | "" | Initializers.cs:12:10:12:10 | M | | Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | | | Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | exit | Initializers.cs:20:11:20:23 | | +| Initializers.cs:20:11:20:23 | exit (normal) | Initializers.cs:20:11:20:23 | | | Initializers.cs:20:11:20:23 | exit NoConstructor | Initializers.cs:20:11:20:23 | NoConstructor | | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | NoConstructor | | Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:22:23:22:23 | this access | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:23:23:23:23 | this access | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:31:9:31:11 | Sub | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:35:9:35:11 | Sub | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:31:9:31:11 | Sub | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:35:9:35:11 | Sub | -| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:31:9:31:11 | Sub | -| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:22:23:22:23 | this access | Initializers.cs:20:11:20:23 | | +| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:20:11:20:23 | | +| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:20:11:20:23 | | +| Initializers.cs:23:23:23:23 | this access | Initializers.cs:20:11:20:23 | | +| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | | +| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:20:11:20:23 | | +| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | | +| Initializers.cs:26:11:26:13 | exit | Initializers.cs:26:11:26:13 | | +| Initializers.cs:26:11:26:13 | exit (normal) | Initializers.cs:26:11:26:13 | | +| Initializers.cs:28:13:28:13 | this access | Initializers.cs:26:11:26:13 | | +| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:26:11:26:13 | | +| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:26:11:26:13 | | +| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:9:31:11 | exit Sub | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:9:31:11 | exit Sub (normal) | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:9:31:11 | Sub | @@ -2152,9 +2185,11 @@ nodeEnclosing | Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:9:35:11 | exit Sub | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:9:35:11 | Sub | @@ -2163,14 +2198,18 @@ nodeEnclosing | Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | IndexInitializers | | Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | IndexInitializers | | Initializers.cs:39:7:39:23 | exit IndexInitializers | Initializers.cs:39:7:39:23 | IndexInitializers | | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | IndexInitializers | | Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | IndexInitializers | | Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | Compound | +| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | Compound | | Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | Compound | | Initializers.cs:41:11:41:18 | exit Compound | Initializers.cs:41:11:41:18 | Compound | | Initializers.cs:41:11:41:18 | exit Compound (normal) | Initializers.cs:41:11:41:18 | Compound | +| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | Compound | | Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | Compound | | Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:51:10:51:13 | exit Test | Initializers.cs:51:10:51:13 | Test | @@ -2278,9 +2317,11 @@ nodeEnclosing | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:59:64:61 | "1" | Initializers.cs:51:10:51:13 | Test | | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | | LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | | LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:7:10:7:11 | exit M1 | LoopUnrolling.cs:7:10:7:11 | M1 | @@ -2489,9 +2530,11 @@ nodeEnclosing | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:94:10:94:12 | M11 | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | exit C1 | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | get_P1 | | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | MultiImplementationA.cs:6:22:6:31 | get_P1 | @@ -2519,9 +2562,12 @@ nodeEnclosing | MultiImplementationA.cs:8:16:8:16 | exit M (normal) | MultiImplementationA.cs:8:16:8:16 | M | | MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:16:8:16 | M | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:11:7:11:8 | exit | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationA.cs:14:31:14:31 | exit get_Item | MultiImplementationA.cs:14:31:14:31 | get_Item | @@ -2548,10 +2594,12 @@ nodeEnclosing | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | MultiImplementationA.cs:18:9:18:22 | M2 | | MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | M2 | | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:12:20:13 | C2 | @@ -2573,14 +2621,16 @@ nodeEnclosing | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (abnormal) | MultiImplementationA.cs:23:28:23:35 | implicit conversion | | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | MultiImplementationA.cs:23:28:23:35 | implicit conversion | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | exit C3 | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | get_P3 | | MultiImplementationA.cs:30:21:30:23 | exit get_P3 | MultiImplementationA.cs:30:21:30:23 | get_P3 | @@ -2588,9 +2638,11 @@ nodeEnclosing | MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:21:30:23 | get_P3 | | MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:21:30:23 | get_P3 | | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | exit C4 | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | M1 | | MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | M1 | @@ -2606,6 +2658,8 @@ nodeEnclosing | MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:9:37:10 | M2 | | MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:9:37:10 | M2 | | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | get_P1 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | get_P2 | @@ -2613,9 +2667,9 @@ nodeEnclosing | MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | set_P2 | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationA.cs:15:36:15:38 | get_Item | @@ -2630,6 +2684,8 @@ nodeEnclosing | MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:9:16:31 | M2 | | MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:9:16:31 | M2 | | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationA.cs:20:12:20:13 | C2 | @@ -2641,19 +2697,25 @@ nodeEnclosing | MultiImplementationB.cs:20:19:20:22 | null | MultiImplementationA.cs:22:6:22:7 | ~C2 | | MultiImplementationB.cs:21:50:21:59 | throw ... | MultiImplementationA.cs:23:28:23:35 | implicit conversion | | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | M1 | | NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | NullCoalescing.cs:1:7:1:20 | NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | M1 | | NullCoalescing.cs:3:9:3:10 | exit M1 | NullCoalescing.cs:3:9:3:10 | M1 | @@ -2722,34 +2784,36 @@ nodeEnclosing | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:13:10:13:11 | M6 | +| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationA.cs:1:15:1:21 | exit | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationA.cs:1:15:1:21 | exit (normal) | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | Partial | | PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | Partial | | PartialImplementationA.cs:3:12:3:18 | exit Partial | PartialImplementationA.cs:3:12:3:18 | Partial | | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | Partial | | PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:4:12:4:18 | Partial | -| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:4:12:4:18 | Partial | -| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | Partial | | PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | Partial | | PartialImplementationB.cs:4:12:4:18 | exit Partial | PartialImplementationB.cs:4:12:4:18 | Partial | | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | Partial | | PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | Partial | -| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:4:12:4:18 | Partial | -| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:4:12:4:18 | Partial | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:4:12:4:18 | Partial | -| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationA.cs:1:15:1:21 | | | Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | Patterns | +| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | Patterns | | Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | Patterns | | Patterns.cs:3:7:3:14 | exit Patterns | Patterns.cs:3:7:3:14 | Patterns | | Patterns.cs:3:7:3:14 | exit Patterns (normal) | Patterns.cs:3:7:3:14 | Patterns | +| Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | Patterns | | Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | Patterns | | Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:5:10:5:11 | exit M1 | Patterns.cs:5:10:5:11 | M1 | @@ -2966,9 +3030,11 @@ nodeEnclosing | Patterns.cs:97:13:97:39 | ...; | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:93:17:93:19 | M10 | | PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | PostDominance | +| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | PostDominance | | PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | PostDominance | | PostDominance.cs:3:7:3:19 | exit PostDominance | PostDominance.cs:3:7:3:19 | PostDominance | | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | PostDominance.cs:3:7:3:19 | PostDominance | +| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | PostDominance | | PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | PostDominance | | PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:5:10:5:11 | M1 | | PostDominance.cs:5:10:5:11 | exit M1 | PostDominance.cs:5:10:5:11 | M1 | @@ -3007,9 +3073,11 @@ nodeEnclosing | PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:17:10:17:11 | M3 | | Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | Qualifiers | +| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | Qualifiers | | Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | Qualifiers | | Qualifiers.cs:1:7:1:16 | exit Qualifiers | Qualifiers.cs:1:7:1:16 | Qualifiers | | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | Qualifiers.cs:1:7:1:16 | Qualifiers | +| Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | Qualifiers | | Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | Qualifiers | | Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:16:7:21 | Method | | Qualifiers.cs:7:16:7:21 | exit Method | Qualifiers.cs:7:16:7:21 | Method | @@ -3078,9 +3146,11 @@ nodeEnclosing | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:10:10:10:10 | M | | Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | Switch | +| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | Switch | | Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | Switch | | Switch.cs:3:7:3:12 | exit Switch | Switch.cs:3:7:3:12 | Switch | | Switch.cs:3:7:3:12 | exit Switch (normal) | Switch.cs:3:7:3:12 | Switch | +| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | Switch | | Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | Switch | | Switch.cs:5:10:5:11 | enter M1 | Switch.cs:5:10:5:11 | M1 | | Switch.cs:5:10:5:11 | exit M1 | Switch.cs:5:10:5:11 | M1 | @@ -3385,9 +3455,11 @@ nodeEnclosing | Switch.cs:175:42:175:46 | "def" | Switch.cs:163:10:163:12 | M16 | | Switch.cs:176:17:176:22 | break; | Switch.cs:163:10:163:12 | M16 | | TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | TypeAccesses | | TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | TypeAccesses | | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | TypeAccesses.cs:1:7:1:18 | TypeAccesses | | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | TypeAccesses | | TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | TypeAccesses | | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:3:10:3:10 | exit M | TypeAccesses.cs:3:10:3:10 | M | @@ -3411,9 +3483,11 @@ nodeEnclosing | TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:3:10:3:10 | M | | VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | VarDecls | +| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | VarDecls | | VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | VarDecls | | VarDecls.cs:3:7:3:14 | exit VarDecls | VarDecls.cs:3:7:3:14 | VarDecls | | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | VarDecls.cs:3:7:3:14 | VarDecls | +| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | VarDecls | | VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | VarDecls | | VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:5:18:5:19 | exit M1 | VarDecls.cs:5:18:5:19 | M1 | @@ -3465,9 +3539,11 @@ nodeEnclosing | VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | C | +| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | C | | VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | C | | VarDecls.cs:28:11:28:11 | exit C | VarDecls.cs:28:11:28:11 | C | | VarDecls.cs:28:11:28:11 | exit C (normal) | VarDecls.cs:28:11:28:11 | C | +| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | C | | VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | C | | VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:41:28:47 | Dispose | | VarDecls.cs:28:41:28:47 | exit Dispose | VarDecls.cs:28:41:28:47 | Dispose | @@ -3753,9 +3829,11 @@ nodeEnclosing | cflow.cs:127:68:127:81 | ...; | cflow.cs:127:62:127:64 | set_Prop | | cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:62:127:64 | set_Prop | | cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:129:5:129:15 | exit ControlFlow | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:130:5:132:5 | {...} | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:131:9:131:13 | this access | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:131:9:131:17 | ... = ... | cflow.cs:129:5:129:15 | ControlFlow | @@ -4121,9 +4199,11 @@ nodeEnclosing | cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | Yield | | cflow.cs:275:13:275:42 | ...; | cflow.cs:261:49:261:53 | Yield | | cflow.cs:275:31:275:40 | "not dead" | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:5:282:18 | exit ControlFlowSub | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:5:282:18 | ControlFlowSub | +| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:31:282:33 | {...} | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:5:284:18 | ControlFlowSub | @@ -4139,9 +4219,11 @@ nodeEnclosing | cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:5:286:18 | ControlFlowSub | | cflow.cs:286:48:286:50 | {...} | cflow.cs:286:5:286:18 | ControlFlowSub | | cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | DelegateCall | +| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | DelegateCall | | cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | DelegateCall | | cflow.cs:289:7:289:18 | exit DelegateCall | cflow.cs:289:7:289:18 | DelegateCall | | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | cflow.cs:289:7:289:18 | DelegateCall | +| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | DelegateCall | | cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | DelegateCall | | cflow.cs:291:12:291:12 | enter M | cflow.cs:291:12:291:12 | M | | cflow.cs:291:12:291:12 | exit M | cflow.cs:291:12:291:12 | M | @@ -4150,9 +4232,11 @@ nodeEnclosing | cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:12:291:12 | M | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:12:291:12 | M | | cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | NegationInConstructor | | cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | NegationInConstructor | | cflow.cs:296:5:296:25 | exit NegationInConstructor | cflow.cs:296:5:296:25 | NegationInConstructor | | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | NegationInConstructor | | cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | NegationInConstructor | | cflow.cs:298:10:298:10 | enter M | cflow.cs:298:10:298:10 | M | | cflow.cs:298:10:298:10 | exit M | cflow.cs:298:10:298:10 | M | @@ -4172,9 +4256,11 @@ nodeEnclosing | cflow.cs:300:61:300:64 | null | cflow.cs:298:10:298:10 | M | | cflow.cs:300:70:300:71 | "" | cflow.cs:298:10:298:10 | M | | cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | LambdaGetter | +| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:304:7:304:18 | exit LambdaGetter | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | cflow.cs:304:7:304:18 | LambdaGetter | +| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | get__getter | | cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | (...) => ... | @@ -4731,11 +4817,14 @@ blockEnclosing | Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:38:26:38:26 | String x | Foreach.cs:36:10:36:11 | M6 | +| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | | | Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | Initializers | | Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | | | Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | | | Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | Sub | @@ -4800,9 +4889,9 @@ blockEnclosing | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:94:10:94:12 | M11 | -| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | get_P1 | | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | MultiImplementationA.cs:6:22:6:31 | get_P1 | | MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:22:6:31 | get_P1 | @@ -4815,6 +4904,9 @@ blockEnclosing | MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:16:8:16 | M | | MultiImplementationA.cs:8:16:8:16 | exit M | MultiImplementationA.cs:8:16:8:16 | M | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationA.cs:14:31:14:31 | exit get_Item | MultiImplementationA.cs:14:31:14:31 | get_Item | @@ -4828,9 +4920,9 @@ blockEnclosing | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | M1 | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:16:17:16:18 | M1 | | MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | M2 | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:12:21:13 | C2 | @@ -4840,33 +4932,34 @@ blockEnclosing | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:28:23:35 | implicit conversion | | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | MultiImplementationA.cs:23:28:23:35 | implicit conversion | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | get_P3 | -| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | M1 | | MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | M1 | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:9:36:10 | M1 | | MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:9:37:10 | M2 | -| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | get_P1 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | set_P2 | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationA.cs:15:36:15:38 | get_Item | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationA.cs:15:54:15:56 | set_Item | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationA.cs:16:17:16:18 | M1 | | MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:9:16:31 | M2 | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationA.cs:22:6:22:7 | ~C2 | | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | -| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | M1 | | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | M1 | @@ -4906,6 +4999,7 @@ blockEnclosing | NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | +| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | Partial | | PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | Partial | | Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | Patterns | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected index ea7ade106ea8..da8fe4664f52 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected @@ -1,4 +1,6 @@ | AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | call to constructor Object | +| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | this access | +| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | this access | | AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | {...} | | AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:30:5:30 | access to parameter i | | AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:37:5:39 | {...} | @@ -290,6 +292,8 @@ | AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:78:73:78 | access to local variable d | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:73:80:73:80 | 1 | | ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | call to constructor Object | +| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | this access | +| ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | this access | | ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | {...} | | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | ArrayCreation.cs:3:27:3:27 | 0 | | ArrayCreation.cs:3:27:3:27 | 0 | ArrayCreation.cs:3:27:3:27 | 0 | @@ -312,6 +316,8 @@ | ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:45:9:45 | 2 | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:48:9:48 | 3 | | Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | call to constructor Object | +| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | this access | +| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | this access | | Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | {...} | | Assert.cs:8:5:12:5 | {...} | Assert.cs:8:5:12:5 | {...} | | Assert.cs:9:9:9:33 | ... ...; | Assert.cs:9:9:9:33 | ... ...; | @@ -675,6 +681,8 @@ | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:33:140:34 | access to parameter b3 | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:141:9:141:15 | return ...; | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | call to constructor Object | +| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | this access | +| Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | this access | | Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | {...} | | Assignments.cs:4:5:15:5 | {...} | Assignments.cs:4:5:15:5 | {...} | | Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:5:9:5:18 | ... ...; | @@ -715,6 +723,8 @@ | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:16:19:16 | access to parameter x | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:16:19:16 | access to parameter x | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object | +| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | this access | +| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | this access | | BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | {...} | | BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:4:5:18:5 | {...} | | BreakInTry.cs:5:9:17:9 | try {...} ... | BreakInTry.cs:5:9:17:9 | try {...} ... | @@ -791,6 +801,8 @@ | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:28:67:31 | null | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | +| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | this access | +| CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | this access | | CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | {...} | | CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:6:5:8:5 | {...} | | CompileTimeOperators.cs:7:9:7:28 | return ...; | CompileTimeOperators.cs:7:16:7:27 | default(...) | @@ -806,6 +818,8 @@ | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | | CompileTimeOperators.cs:22:23:22:23 | access to parameter i | CompileTimeOperators.cs:22:23:22:23 | access to parameter i | | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | +| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | this access | +| CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | this access | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | {...} | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:29:5:41:5 | {...} | | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | @@ -826,6 +840,8 @@ | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:14:40:38 | ...; | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:32:40:36 | "End" | | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | +| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | this access | +| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | this access | | ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | {...} | | ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | access to parameter i | | ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:26 | access to parameter i | @@ -886,6 +902,8 @@ | ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:75:41:78 | ", " | | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | | Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | call to constructor Object | +| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | this access | +| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | this access | | Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | {...} | | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:4:5:9:5 | {...} | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:5:9:6:16 | if (...) ... | @@ -1167,6 +1185,8 @@ | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:45:149:45 | access to local variable s | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:45:149:45 | access to local variable s | | ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | call to constructor Object | +| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | this access | +| ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | this access | | ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | {...} | | ExitMethods.cs:9:5:12:5 | {...} | ExitMethods.cs:9:5:12:5 | {...} | | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | ExitMethods.cs:10:20:10:23 | true | @@ -1336,6 +1356,8 @@ | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | access to method Parse | | Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:23:25:32 | access to method Parse | | Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | call to constructor Object | +| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | this access | +| Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | this access | | Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | {...} | | Finally.cs:8:5:17:5 | {...} | Finally.cs:8:5:17:5 | {...} | | Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:9:9:16:9 | try {...} ... | @@ -1547,10 +1569,16 @@ | Finally.cs:167:17:167:38 | ...; | Finally.cs:167:17:167:38 | ...; | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:35:167:36 | "" | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | call to constructor Exception | +| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | this access | +| Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | this access | | Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | {...} | | Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | call to constructor Exception | +| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | this access | +| Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | this access | | Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | {...} | | Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | call to constructor Exception | +| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | this access | +| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | this access | | Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | {...} | | Finally.cs:177:5:193:5 | {...} | Finally.cs:177:5:193:5 | {...} | | Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:178:9:192:9 | try {...} ... | @@ -1667,6 +1695,8 @@ | Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:19 | ...; | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:18:272:18 | 3 | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | call to constructor Object | +| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | this access | +| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | this access | | Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | {...} | | Foreach.cs:7:5:10:5 | {...} | Foreach.cs:7:5:10:5 | {...} | | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | access to parameter args | @@ -1721,8 +1751,12 @@ | Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:27:6:27 | access to field H | | Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:31:6:31 | 2 | | Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | call to constructor Object | +| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | this access | +| Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | this access | | Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:20:8:22 | {...} | | Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | call to constructor Object | +| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | this access | +| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | this access | | Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:28:10:30 | {...} | | Initializers.cs:13:5:16:5 | {...} | Initializers.cs:13:5:16:5 | {...} | | Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:14:9:14:54 | ... ...; | @@ -1745,6 +1779,8 @@ | Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:20:18:20 | 1 | | Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:20:18:20 | 1 | | Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | call to constructor Object | +| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | this access | +| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | this access | | Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | {...} | | Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:23:22:23 | this access | | Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:23:22:23 | this access | @@ -1758,6 +1794,8 @@ | Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:13:28:13 | this access | | Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:28:13:28:13 | this access | | Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:17:28:17 | 2 | +| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:9:31:11 | this access | +| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | this access | | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | | Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:24:31:33 | {...} | | Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:26:31:26 | this access | @@ -1773,6 +1811,8 @@ | Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:36 | ...; | | Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:35:33:35 | access to parameter i | | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | +| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | this access | +| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | this access | | Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:27:35:40 | {...} | | Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:29 | this access | | Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:29 | this access | @@ -1782,8 +1822,12 @@ | Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:33:35:33 | access to parameter i | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:37:35:37 | access to parameter j | | Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | call to constructor Object | +| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | this access | +| Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | this access | | Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | {...} | | Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | call to constructor Object | +| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | this access | +| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | this access | | Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | {...} | | Initializers.cs:52:5:66:5 | {...} | Initializers.cs:52:5:66:5 | {...} | | Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:54:9:54:96 | ... ...; | @@ -1893,6 +1937,8 @@ | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:54:64:54 | 0 | | Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:59:64:61 | "1" | | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | +| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | this access | +| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | this access | | LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | {...} | | LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:8:5:13:5 | {...} | | LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:9:9:10:19 | if (...) ... | @@ -2067,6 +2113,8 @@ | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:13:99:33 | ...; | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:31:99:31 | access to local variable x | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | this access | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | this access | | MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | {...} | | MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:28:6:31 | null | | MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:28:6:31 | null | @@ -2092,6 +2140,8 @@ | MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:18:9:18:22 | M2(...) | | MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:21:18:21 | 0 | | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | +| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | this access | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | this access | | MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:22:20:31 | {...} | | MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:24 | this access | | MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:24 | this access | @@ -2108,10 +2158,14 @@ | MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:24:16:24:16 | this access | | MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:34:24:34 | 0 | | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | this access | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | this access | | MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | {...} | | MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:34:30:37 | null | | MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:34:30:37 | null | | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | this access | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | this access | | MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | {...} | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:14:36:28 | {...} | | MultiImplementationA.cs:36:16:36:26 | throw ...; | MultiImplementationA.cs:36:22:36:25 | null | @@ -2120,6 +2174,8 @@ | MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:22:37:25 | null | | MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:22:37:25 | null | | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | this access | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | this access | | MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationB.cs:1:7:1:8 | {...} | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationB.cs:3:22:3:22 | 0 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:25:4:37 | {...} | @@ -2143,6 +2199,8 @@ | MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:27:16:30 | null | | MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:27:16:30 | null | | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | this access | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | this access | | MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:22:18:36 | {...} | | MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationB.cs:18:30:18:33 | null | | MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:30:18:33 | null | @@ -2159,11 +2217,17 @@ | MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:22:16:22:16 | this access | | MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:34:22:34 | 1 | | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | this access | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | this access | | MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationB.cs:25:7:25:8 | {...} | | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | this access | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | this access | | MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationB.cs:30:15:30:16 | {...} | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:17:32:17 | 0 | | NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | call to constructor Object | +| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | this access | +| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | this access | | NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | {...} | | NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | access to parameter i | | NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:23 | access to parameter i | @@ -2214,18 +2278,24 @@ | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:19:17:19 | access to parameter i | | NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 | | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | +| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | this access | +| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | this access | | PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:27:3:29 | {...} | | PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:16 | this access | | PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:16:3:16 | this access | | PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:3:16:3:16 | this access | | PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:20:3:20 | 0 | | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | +| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | this access | +| PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | this access | | PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:22:4:24 | {...} | | PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:16:5:16 | this access | | PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:16:5:16 | this access | | PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:5:16:5:16 | this access | | PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:34:5:34 | 0 | | Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | call to constructor Object | +| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | this access | +| Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | this access | | Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | {...} | | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:6:5:43:5 | {...} | | Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:9:7:24 | ... ...; | @@ -2398,6 +2468,8 @@ | Patterns.cs:97:13:97:39 | ...; | Patterns.cs:97:13:97:39 | ...; | | Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:31:97:37 | "not C" | | PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | call to constructor Object | +| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | this access | +| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | this access | | PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | {...} | | PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:6:5:8:5 | {...} | | PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:7:27:7:27 | access to parameter s | @@ -2425,6 +2497,8 @@ | PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:9:21:29 | ...; | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:27:21:27 | access to parameter s | | Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | call to constructor Object | +| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | this access | +| Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | this access | | Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | {...} | | Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:28:7:31 | null | | Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:41:8:44 | null | @@ -2484,6 +2558,8 @@ | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | | Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | | Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | call to constructor Object | +| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | this access | +| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | this access | | Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | {...} | | Switch.cs:6:5:8:5 | {...} | Switch.cs:6:5:8:5 | {...} | | Switch.cs:7:9:7:22 | switch (...) {...} | Switch.cs:7:9:7:22 | switch (...) {...} | @@ -2734,6 +2810,8 @@ | Switch.cs:175:42:175:46 | "def" | Switch.cs:175:42:175:46 | "def" | | Switch.cs:176:17:176:22 | break; | Switch.cs:176:17:176:22 | break; | | TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to constructor Object | +| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | this access | +| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | this access | | TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | {...} | | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:4:5:9:5 | {...} | | TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:9:5:26 | ... ...; | @@ -2753,6 +2831,8 @@ | TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:8:17:8:27 | typeof(...) | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:17:8:27 | typeof(...) | | VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | call to constructor Object | +| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | this access | +| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | this access | | VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | {...} | | VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:6:5:11:5 | {...} | | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | @@ -2795,6 +2875,8 @@ | VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x | | VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y | | VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | call to constructor Object | +| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | this access | +| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | this access | | VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | {...} | | VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:51:28:53 | {...} | | cflow.cs:6:5:35:5 | {...} | cflow.cs:6:5:35:5 | {...} | @@ -3049,6 +3131,8 @@ | cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:81 | ...; | | cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:76:127:80 | access to parameter value | | cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | call to constructor Object | +| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | this access | +| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | this access | | cflow.cs:130:5:132:5 | {...} | cflow.cs:130:5:132:5 | {...} | | cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:13 | this access | | cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:13 | this access | @@ -3372,6 +3456,8 @@ | cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:275:31:275:40 | "not dead" | | cflow.cs:275:13:275:42 | ...; | cflow.cs:275:13:275:42 | ...; | | cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:31:275:40 | "not dead" | +| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:5:282:18 | this access | +| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | this access | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:24:282:27 | call to constructor ControlFlow | | cflow.cs:282:31:282:33 | {...} | cflow.cs:282:31:282:33 | {...} | | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | @@ -3381,11 +3467,15 @@ | cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:34:286:34 | access to parameter i | | cflow.cs:286:48:286:50 | {...} | cflow.cs:286:48:286:50 | {...} | | cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | call to constructor Object | +| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | this access | +| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | this access | | cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | {...} | | cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:38:291:38 | access to parameter f | | cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:38:291:38 | access to parameter f | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:40:291:40 | 0 | | cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | call to constructor Object | +| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | this access | +| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | this access | | cflow.cs:296:52:296:54 | {...} | cflow.cs:296:52:296:54 | {...} | | cflow.cs:299:5:301:5 | {...} | cflow.cs:299:5:301:5 | {...} | | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:300:38:300:38 | 0 | @@ -3401,6 +3491,8 @@ | cflow.cs:300:61:300:64 | null | cflow.cs:300:61:300:64 | null | | cflow.cs:300:70:300:71 | "" | cflow.cs:300:70:300:71 | "" | | cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | call to constructor Object | +| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | this access | +| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | this access | | cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | {...} | | cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | (...) => ... | | cflow.cs:307:5:310:5 | {...} | cflow.cs:307:5:310:5 | {...} | diff --git a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected index 11880f4f8252..e3d13701cffd 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected @@ -1,4 +1,6 @@ | AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | call to constructor Object | normal | +| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | call to method | normal | +| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | this access | normal | | AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | {...} | normal | | AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:30:5:30 | access to parameter i | normal | | AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:37:5:39 | {...} | normal | @@ -290,6 +292,8 @@ | AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:78:73:81 | dynamic access to element | normal | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:73:80:73:80 | 1 | normal | | ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | call to constructor Object | normal | +| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | call to method | normal | +| ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | this access | normal | | ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | {...} | normal | | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | normal | | ArrayCreation.cs:3:27:3:27 | 0 | ArrayCreation.cs:3:27:3:27 | 0 | normal | @@ -312,6 +316,8 @@ | ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:45:9:45 | 2 | normal | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:48:9:48 | 3 | normal | | Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | call to constructor Object | normal | +| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | call to method | normal | +| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | this access | normal | | Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | {...} | normal | | Assert.cs:8:5:12:5 | {...} | Assert.cs:10:9:10:31 | call to method Assert | exit | | Assert.cs:8:5:12:5 | {...} | Assert.cs:11:9:11:35 | call to method WriteLine | normal | @@ -774,6 +780,8 @@ | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:33:140:34 | access to parameter b3 | normal | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:141:9:141:15 | return ...; | return | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | call to constructor Object | normal | +| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | call to method | normal | +| Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | this access | normal | | Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | {...} | normal | | Assignments.cs:4:5:15:5 | {...} | Assignments.cs:14:9:14:35 | ... += ... | normal | | Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:5:13:5:17 | Int32 x = ... | normal | @@ -814,6 +822,8 @@ | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:9:19:17 | return ...; | return | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:16:19:16 | access to parameter x | normal | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object | normal | +| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | call to method | normal | +| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | this access | normal | | BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | {...} | normal | | BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:15:17:15:28 | ... == ... | false | | BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:16:17:16:17 | ; | normal | @@ -941,6 +951,8 @@ | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:28:67:31 | null | normal | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | break | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | normal | +| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | call to method | normal | +| CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | this access | normal | | CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | {...} | normal | | CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:7:9:7:28 | return ...; | return | | CompileTimeOperators.cs:7:9:7:28 | return ...; | CompileTimeOperators.cs:7:9:7:28 | return ...; | return | @@ -956,6 +968,8 @@ | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | normal | | CompileTimeOperators.cs:22:23:22:23 | access to parameter i | CompileTimeOperators.cs:22:23:22:23 | access to parameter i | normal | | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | normal | +| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | call to method | normal | +| CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | this access | normal | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | {...} | normal | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | goto(End) [normal] (0) | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | throw(Exception) [normal] (0) | @@ -984,6 +998,8 @@ | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | normal | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:32:40:36 | "End" | normal | | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | normal | +| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | call to method | normal | +| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | this access | normal | | ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | {...} | normal | | ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | access to parameter i | non-null | | ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | access to parameter i | null | @@ -1070,6 +1086,8 @@ | ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:75:41:78 | ", " | normal | | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | normal | | Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | call to constructor Object | normal | +| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | call to method | normal | +| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | this access | normal | | Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | {...} | normal | | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:7:13:7:16 | !... | false | | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:8:13:8:15 | ...-- | normal | @@ -1427,6 +1445,8 @@ | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:44:149:46 | {...} | normal | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:45:149:45 | access to local variable s | normal | | ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | call to constructor Object | normal | +| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | call to method | normal | +| ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | this access | normal | | ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | {...} | normal | | ExitMethods.cs:9:5:12:5 | {...} | ExitMethods.cs:11:9:11:15 | return ...; | return | | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | normal | @@ -1629,6 +1649,8 @@ | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | access to method Parse | normal | | Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:23:25:32 | delegate creation of type Func | normal | | Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | call to constructor Object | normal | +| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | call to method | normal | +| Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | this access | normal | | Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | {...} | normal | | Finally.cs:8:5:17:5 | {...} | Finally.cs:15:13:15:40 | call to method WriteLine | normal | | Finally.cs:8:5:17:5 | {...} | Finally.cs:15:13:15:40 | call to method WriteLine | throw(Exception) [normal] (0) | @@ -2018,10 +2040,16 @@ | Finally.cs:167:17:167:38 | ...; | Finally.cs:167:17:167:37 | call to method WriteLine | normal | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:35:167:36 | "" | normal | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | call to constructor Exception | normal | +| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | call to method | normal | +| Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | this access | normal | | Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | {...} | normal | | Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | call to constructor Exception | normal | +| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | call to method | normal | +| Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | this access | normal | | Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | {...} | normal | | Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | call to constructor Exception | normal | +| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | call to method | normal | +| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | this access | normal | | Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | {...} | normal | | Finally.cs:177:5:193:5 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | false | | Finally.cs:177:5:193:5 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | throw(Exception) [false] (0) | @@ -2267,6 +2295,8 @@ | Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:18 | ... = ... | normal | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:18:272:18 | 3 | normal | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | call to constructor Object | normal | +| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | call to method | normal | +| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | this access | normal | | Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | {...} | normal | | Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | empty | | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | empty | @@ -2324,8 +2354,12 @@ | Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:27:6:31 | ... + ... | normal | | Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:31:6:31 | 2 | normal | | Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | call to constructor Object | normal | +| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | call to method | normal | +| Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | this access | normal | | Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:20:8:22 | {...} | normal | | Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | call to constructor Object | normal | +| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | call to method | normal | +| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | this access | normal | | Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:28:10:30 | {...} | normal | | Initializers.cs:13:5:16:5 | {...} | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | normal | | Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:14:13:14:53 | Initializers i = ... | normal | @@ -2348,6 +2382,8 @@ | Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:20 | ... = ... | normal | | Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:20:18:20 | 1 | normal | | Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | call to constructor Object | normal | +| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | call to method | normal | +| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | this access | normal | | Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | {...} | normal | | Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:23:22:23 | this access | normal | | Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:23:22:23 | this access | normal | @@ -2361,6 +2397,8 @@ | Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:13:28:13 | this access | normal | | Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:28:13:28:17 | ... = ... | normal | | Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:17:28:17 | 2 | normal | +| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:9:31:11 | call to method | normal | +| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | this access | normal | | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | normal | | Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:26:31:30 | ... = ... | normal | | Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:26:31:26 | this access | normal | @@ -2376,6 +2414,8 @@ | Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:35 | ... = ... | normal | | Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:35:33:35 | access to parameter i | normal | | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | normal | +| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | call to method | normal | +| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | this access | normal | | Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:29:35:37 | ... = ... | normal | | Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:29 | this access | normal | | Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:29 | this access | normal | @@ -2385,8 +2425,12 @@ | Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:33:35:37 | ... + ... | normal | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:37:35:37 | access to parameter j | normal | | Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | call to constructor Object | normal | +| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | call to method | normal | +| Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | this access | normal | | Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | {...} | normal | | Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | call to constructor Object | normal | +| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | call to method | normal | +| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | this access | normal | | Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | {...} | normal | | Initializers.cs:52:5:66:5 | {...} | Initializers.cs:57:13:65:9 | Compound compound = ... | normal | | Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:54:13:54:95 | Dictionary dict = ... | normal | @@ -2496,6 +2540,8 @@ | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:54:64:54 | 0 | normal | | Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:59:64:61 | "1" | normal | | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | normal | +| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | call to method | normal | +| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | this access | normal | | LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | {...} | normal | | LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:10:13:10:19 | return ...; | return | | LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | empty | @@ -2684,6 +2730,8 @@ | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | normal | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:31:99:31 | access to local variable x | normal | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | normal | +| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | call to method | normal | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | this access | normal | | MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | {...} | normal | | MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:22:6:31 | throw ... | throw(NullReferenceException) | | MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:28:6:31 | null | normal | @@ -2709,6 +2757,8 @@ | MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:18:9:18:22 | M2(...) | normal | | MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:21:18:21 | 0 | normal | | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | normal | +| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | call to method | normal | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | this access | normal | | MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:24:20:28 | ... = ... | normal | | MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:24 | this access | normal | | MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:24 | this access | normal | @@ -2725,10 +2775,14 @@ | MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:24:32:24:34 | ... = ... | normal | | MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:34:24:34 | 0 | normal | | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | normal | +| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | call to method | normal | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | this access | normal | | MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | {...} | normal | | MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:28:30:37 | throw ... | throw(NullReferenceException) | | MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:34:30:37 | null | normal | | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | normal | +| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | call to method | normal | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | this access | normal | | MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | {...} | normal | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:16:36:26 | throw ...; | throw(NullReferenceException) | | MultiImplementationA.cs:36:16:36:26 | throw ...; | MultiImplementationA.cs:36:16:36:26 | throw ...; | throw(NullReferenceException) | @@ -2737,6 +2791,8 @@ | MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:16:37:26 | throw ...; | throw(NullReferenceException) | | MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:22:37:25 | null | normal | | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | normal | +| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | call to method | normal | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | this access | normal | | MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationB.cs:1:7:1:8 | {...} | normal | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationB.cs:3:22:3:22 | 0 | normal | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:27:4:35 | return ...; | return | @@ -2760,6 +2816,8 @@ | MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:21:16:30 | throw ... | throw(NullReferenceException) | | MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:27:16:30 | null | normal | | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | normal | +| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | call to method | normal | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | this access | normal | | MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:24:18:34 | throw ...; | throw(NullReferenceException) | | MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationB.cs:18:24:18:34 | throw ...; | throw(NullReferenceException) | | MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:30:18:33 | null | normal | @@ -2776,11 +2834,17 @@ | MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:22:32:22:34 | ... = ... | normal | | MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:34:22:34 | 1 | normal | | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | normal | +| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | call to method | normal | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | this access | normal | | MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationB.cs:25:7:25:8 | {...} | normal | | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | normal | +| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | call to method | normal | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | this access | normal | | MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationB.cs:30:15:30:16 | {...} | normal | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:17:32:17 | 0 | normal | | NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | call to constructor Object | normal | +| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | call to method | normal | +| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | this access | normal | | NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | {...} | normal | | NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | access to parameter i | non-null | | NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | access to parameter i | null | @@ -2847,18 +2911,24 @@ | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:19:17:19 | access to parameter i | normal | | NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 | normal | | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | normal | +| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | call to method | normal | +| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | this access | normal | | PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:27:3:29 | {...} | normal | | PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:16 | this access | normal | | PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:16:3:16 | this access | normal | | PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:3:16:3:20 | ... = ... | normal | | PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:20:3:20 | 0 | normal | | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | normal | +| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | call to method | normal | +| PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | this access | normal | | PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:22:4:24 | {...} | normal | | PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:16:5:16 | this access | normal | | PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:16:5:16 | this access | normal | | PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:5:32:5:34 | ... = ... | normal | | PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:34:5:34 | 0 | normal | | Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | call to constructor Object | normal | +| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | call to method | normal | +| Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | this access | normal | | Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | {...} | normal | | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:40:17:40:17 | access to local variable o | normal | | Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:23 | Object o = ... | normal | @@ -3091,6 +3161,8 @@ | Patterns.cs:97:13:97:39 | ...; | Patterns.cs:97:13:97:38 | call to method WriteLine | normal | | Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:31:97:37 | "not C" | normal | | PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | call to constructor Object | normal | +| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | call to method | normal | +| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | this access | normal | | PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | {...} | normal | | PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:7:9:7:28 | call to method WriteLine | normal | | PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:7:9:7:28 | call to method WriteLine | normal | @@ -3126,6 +3198,8 @@ | PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:9:21:28 | call to method WriteLine | normal | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:27:21:27 | access to parameter s | normal | | Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | call to constructor Object | normal | +| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | call to method | normal | +| Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | this access | normal | | Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | {...} | normal | | Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:28:7:31 | null | normal | | Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:41:8:44 | null | normal | @@ -3185,6 +3259,8 @@ | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | normal | | Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:13:30:46 | call to method Method | normal | | Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | call to constructor Object | normal | +| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | call to method | normal | +| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | this access | normal | | Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | {...} | normal | | Switch.cs:6:5:8:5 | {...} | Switch.cs:7:17:7:17 | access to parameter o | normal | | Switch.cs:7:9:7:22 | switch (...) {...} | Switch.cs:7:17:7:17 | access to parameter o | normal | @@ -3579,6 +3655,8 @@ | Switch.cs:175:42:175:46 | "def" | Switch.cs:175:42:175:46 | "def" | normal | | Switch.cs:176:17:176:22 | break; | Switch.cs:176:17:176:22 | break; | break | | TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to constructor Object | normal | +| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | call to method | normal | +| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | this access | normal | | TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | {...} | normal | | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:8:13:8:27 | Type t = ... | normal | | TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:25 | String s = ... | normal | @@ -3601,6 +3679,8 @@ | TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:8:13:8:27 | Type t = ... | normal | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:17:8:27 | typeof(...) | normal | | VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | call to constructor Object | normal | +| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | call to method | normal | +| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | this access | normal | | VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | {...} | normal | | VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:9:13:9:29 | return ...; | return | | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:9:13:9:29 | return ...; | return | @@ -3644,6 +3724,8 @@ | VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x | normal | | VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y | normal | | VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | call to constructor Object | normal | +| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | call to method | normal | +| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | this access | normal | | VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | {...} | normal | | VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:51:28:53 | {...} | normal | | cflow.cs:6:5:35:5 | {...} | cflow.cs:24:25:24:31 | ... <= ... | false | @@ -3959,6 +4041,8 @@ | cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:80 | ... = ... | normal | | cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:76:127:80 | access to parameter value | normal | | cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | call to constructor Object | normal | +| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | call to method | normal | +| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | this access | normal | | cflow.cs:130:5:132:5 | {...} | cflow.cs:131:9:131:17 | ... = ... | normal | | cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:13 | this access | normal | | cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:13 | this access | normal | @@ -4352,6 +4436,8 @@ | cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:275:13:275:41 | call to method WriteLine | normal | | cflow.cs:275:13:275:42 | ...; | cflow.cs:275:13:275:41 | call to method WriteLine | normal | | cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:31:275:40 | "not dead" | normal | +| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:5:282:18 | call to method | normal | +| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | this access | normal | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:24:282:27 | call to constructor ControlFlow | normal | | cflow.cs:282:31:282:33 | {...} | cflow.cs:282:31:282:33 | {...} | normal | | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | normal | @@ -4361,11 +4447,15 @@ | cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:34:286:45 | call to method ToString | normal | | cflow.cs:286:48:286:50 | {...} | cflow.cs:286:48:286:50 | {...} | normal | | cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | call to constructor Object | normal | +| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | call to method | normal | +| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | this access | normal | | cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | {...} | normal | | cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:38:291:38 | access to parameter f | normal | | cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:38:291:41 | delegate call | normal | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:40:291:40 | 0 | normal | | cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | call to constructor Object | normal | +| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | call to method | normal | +| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | this access | normal | | cflow.cs:296:52:296:54 | {...} | cflow.cs:296:52:296:54 | {...} | normal | | cflow.cs:299:5:301:5 | {...} | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | normal | | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | normal | @@ -4383,6 +4473,8 @@ | cflow.cs:300:61:300:64 | null | cflow.cs:300:61:300:64 | null | normal | | cflow.cs:300:70:300:71 | "" | cflow.cs:300:70:300:71 | "" | normal | | cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | call to constructor Object | normal | +| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | call to method | normal | +| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | this access | normal | | cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | {...} | normal | | cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | (...) => ... | normal | | cflow.cs:307:5:310:5 | {...} | cflow.cs:309:9:309:17 | return ...; | return | diff --git a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected index 63855522ba60..b764e2fb2a56 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected @@ -1,6 +1,8 @@ | AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | {...} | | -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | call to constructor Object | | +| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | call to constructor Object | | +| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | this access | | | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | | +| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | call to method | | | AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | | | AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:30:5:30 | access to parameter i | | | AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | AccessorCalls.cs:5:23:5:25 | exit get_Item | | @@ -304,8 +306,10 @@ | AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:74:73:82 | (..., ...) | | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:73:78:73:81 | dynamic access to element | | | ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | {...} | | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | call to constructor Object | | +| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | call to constructor Object | | +| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | this access | | | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | | +| ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | call to method | | | ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | | | ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:27:3:27 | 0 | | | ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | ArrayCreation.cs:3:11:3:12 | exit M1 | | @@ -336,8 +340,10 @@ | ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:48:9:48 | 3 | | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:43:9:50 | { ..., ... } | | | Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | {...} | | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | call to constructor Object | | +| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | call to constructor Object | | +| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | this access | | | Assert.cs:5:7:5:17 | exit AssertTests (normal) | Assert.cs:5:7:5:17 | exit AssertTests | | +| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | call to method | | | Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | exit AssertTests (normal) | | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:8:5:12:5 | {...} | | | Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | exit M1 | | @@ -795,8 +801,10 @@ | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | return | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | {...} | | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | call to constructor Object | | +| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | call to constructor Object | | +| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | this access | | | Assignments.cs:1:7:1:17 | exit Assignments (normal) | Assignments.cs:1:7:1:17 | exit Assignments | | +| Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | call to method | | | Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | exit Assignments (normal) | | | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:4:5:15:5 | {...} | | | Assignments.cs:3:10:3:10 | exit M (normal) | Assignments.cs:3:10:3:10 | exit M | | @@ -840,8 +848,10 @@ | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | exit + (normal) | return | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:9:19:17 | return ...; | | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | {...} | | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | call to constructor Object | | +| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | call to constructor Object | | +| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | this access | | | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | BreakInTry.cs:1:7:1:16 | exit BreakInTry | | +| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | call to method | | | BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | | | BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:4:5:18:5 | {...} | | | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 | | @@ -942,8 +952,10 @@ | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:21:67:31 | ... == ... | | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | break, return | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | {...} | | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | | +| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | | +| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | this access | | | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | | +| CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | call to method | | | CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | | | CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:6:5:8:5 | {...} | | | CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | CompileTimeOperators.cs:5:9:5:15 | exit Default | | @@ -966,8 +978,10 @@ | CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:20:12:20:17 | exit Nameof (normal) | return | | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:9:22:25 | return ...; | | | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | {...} | | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | | +| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | | +| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | this access | | | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | | +| CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | call to method | | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:29:5:41:5 | {...} | | | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M | | @@ -990,8 +1004,10 @@ | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:32:40:36 | "End" | | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | | | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | {...} | | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | | +| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | | +| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | this access | | | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | | +| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | call to method | | | ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | | | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 | | @@ -1085,8 +1101,10 @@ | ConditionalAccess.cs:41:75:41:78 | ", " | ConditionalAccess.cs:41:70:41:78 | ... + ... | | | ConditionalAccess.cs:41:82:41:83 | access to parameter s2 | ConditionalAccess.cs:41:70:41:83 | ... + ... | | | Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | {...} | | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | call to constructor Object | | +| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | call to constructor Object | | +| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | this access | | | Conditions.cs:1:7:1:16 | exit Conditions (normal) | Conditions.cs:1:7:1:16 | exit Conditions | | +| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | call to method | | | Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | exit Conditions (normal) | | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:4:5:9:5 | {...} | | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | | @@ -1427,8 +1445,10 @@ | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:38:149:47 | $"..." | | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:44:149:46 | {...} | | | ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | {...} | | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | call to constructor Object | | +| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | call to constructor Object | | +| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | this access | | | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | ExitMethods.cs:6:7:6:17 | exit ExitMethods | | +| ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | call to method | | | ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | | | ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:9:5:12:5 | {...} | | | ExitMethods.cs:8:10:8:11 | exit M1 (normal) | ExitMethods.cs:8:10:8:11 | exit M1 | | @@ -1639,8 +1659,10 @@ | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func | | | Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:9:25:33 | call to method ToBool | | | Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | {...} | | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | call to constructor Object | | +| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | call to constructor Object | | +| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | this access | | | Finally.cs:3:14:3:20 | exit Finally (normal) | Finally.cs:3:14:3:20 | exit Finally | | +| Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | call to method | | | Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | exit Finally (normal) | | | Finally.cs:7:10:7:11 | enter M1 | Finally.cs:8:5:17:5 | {...} | | | Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | exit M1 | | @@ -1906,16 +1928,22 @@ | Finally.cs:167:17:167:38 | ...; | Finally.cs:167:35:167:36 | "" | | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:37 | call to method WriteLine | | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | {...} | | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | call to constructor Exception | | +| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | call to constructor Exception | | +| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | this access | | | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | exit ExceptionA | | +| Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | call to method | | | Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | | | Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | {...} | | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | call to constructor Exception | | +| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | call to constructor Exception | | +| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | this access | | | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | Finally.cs:173:11:173:20 | exit ExceptionB | | +| Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | call to method | | | Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | | | Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | {...} | | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | call to constructor Exception | | +| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | call to constructor Exception | | +| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | this access | | | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | Finally.cs:174:11:174:20 | exit ExceptionC | | +| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | call to method | | | Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:177:5:193:5 | {...} | | | Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | exit M9 | | @@ -2067,8 +2095,10 @@ | Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:13 | access to parameter i | | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... + ... | | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | {...} | | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | call to constructor Object | | +| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | call to constructor Object | | +| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | this access | | | Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | exit Foreach | | +| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | call to method | | | Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | exit Foreach (normal) | | | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:7:5:10:5 | {...} | | | Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | exit M1 | | @@ -2129,38 +2159,33 @@ | Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:38:18:38:34 | (..., ...) | | | Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | | | Foreach.cs:39:11:39:11 | ; | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | | +| Initializers.cs:3:7:3:18 | enter | Initializers.cs:5:9:5:9 | this access | | | Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | {...} | | +| Initializers.cs:3:7:3:18 | exit (normal) | Initializers.cs:3:7:3:18 | exit | | | Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | exit Initializers | | | Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | exit Initializers (normal) | | | Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:13:5:13 | access to field H | | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:13:5:13 | access to field H | | -| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:6:9:6:9 | this access | | | Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:6:9:6:9 | this access | | | Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:17:5:17 | 1 | | -| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:17:5:17 | 1 | | | Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:9:5:17 | ... = ... | | -| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:9:5:17 | ... = ... | | -| Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:17 | ... + ... | | | Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:17 | ... + ... | | | Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:25:6:31 | ... = ... | | -| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:25:6:31 | ... = ... | | -| Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:27:6:27 | access to field H | | | Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:27:6:27 | access to field H | | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:8:20:8:22 | {...} | | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:10:28:10:30 | {...} | | +| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:3:7:3:18 | exit (normal) | | | Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:31:6:31 | 2 | | -| Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:31:6:31 | 2 | | -| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:9:6:9 | access to property G | | | Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:9:6:9 | access to property G | | | Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:27:6:31 | ... + ... | | -| Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:27:6:31 | ... + ... | | -| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:5:9:5:9 | this access | | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | call to constructor Object | | +| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:20:8:22 | {...} | | +| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | call to constructor Object | | +| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | this access | | | Initializers.cs:8:5:8:16 | exit Initializers (normal) | Initializers.cs:8:5:8:16 | exit Initializers | | +| Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | call to method | | | Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | exit Initializers (normal) | | -| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:5:9:5:9 | this access | | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | call to constructor Object | | +| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:28:10:30 | {...} | | +| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | call to constructor Object | | +| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | this access | | | Initializers.cs:10:5:10:16 | exit Initializers (normal) | Initializers.cs:10:5:10:16 | exit Initializers | | +| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | call to method | | | Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | exit Initializers (normal) | | | Initializers.cs:12:10:12:10 | enter M | Initializers.cs:13:5:16:5 | {...} | | | Initializers.cs:12:10:12:10 | exit M (normal) | Initializers.cs:12:10:12:10 | exit M | | @@ -2187,25 +2212,30 @@ | Initializers.cs:18:16:18:16 | exit H (normal) | Initializers.cs:18:16:18:16 | exit H | | | Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:16 | exit H (normal) | | | Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:20 | ... = ... | | -| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:22:23:22:23 | this access | | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | call to constructor Object | | +| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | {...} | | +| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | call to constructor Object | | +| Initializers.cs:20:11:20:23 | enter | Initializers.cs:22:23:22:23 | this access | | +| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | this access | | +| Initializers.cs:20:11:20:23 | exit (normal) | Initializers.cs:20:11:20:23 | exit | | | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | exit NoConstructor | | +| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | call to method | | | Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | | | Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:27:22:27 | 0 | | | Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:23:23:23:23 | this access | | | Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:27 | ... = ... | | | Initializers.cs:23:23:23:23 | this access | Initializers.cs:23:27:23:27 | 1 | | -| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | {...} | | +| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | exit (normal) | | | Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:27 | ... = ... | | +| Initializers.cs:26:11:26:13 | enter | Initializers.cs:28:13:28:13 | this access | | +| Initializers.cs:26:11:26:13 | exit (normal) | Initializers.cs:26:11:26:13 | exit | | | Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:17:28:17 | 2 | | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:17:28:17 | 2 | | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:31:24:31:33 | {...} | | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:35:27:35:40 | {...} | | -| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:17 | ... = ... | | +| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:26:11:26:13 | exit (normal) | | | Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:17 | ... = ... | | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | | +| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | | +| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | this access | | | Initializers.cs:31:9:31:11 | exit Sub (normal) | Initializers.cs:31:9:31:11 | exit Sub | | -| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:28:13:28:13 | this access | | +| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | call to method | | +| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:24:31:33 | {...} | | | Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:26:31:31 | ...; | | | Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:30:31:30 | 3 | | | Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:9:31:11 | exit Sub (normal) | | @@ -2219,9 +2249,11 @@ | Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:9:33:11 | exit Sub (normal) | | | Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:31 | this access | | | Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:35 | ... = ... | | -| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:28:13:28:13 | this access | | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | | +| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:27:35:40 | {...} | | +| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | | +| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | this access | | | Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:9:35:11 | exit Sub | | +| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | call to method | | | Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:29:35:38 | ...; | | | Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:33:35:33 | access to parameter i | | | Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:9:35:11 | exit Sub (normal) | | @@ -2230,12 +2262,16 @@ | Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:29:35:37 | ... = ... | | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:33:35:37 | ... + ... | | | Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | {...} | | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | call to constructor Object | | +| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | call to constructor Object | | +| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | this access | | | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | Initializers.cs:39:7:39:23 | exit IndexInitializers | | +| Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | call to method | | | Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | | | Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | {...} | | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | call to constructor Object | | +| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | call to constructor Object | | +| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | this access | | | Initializers.cs:41:11:41:18 | exit Compound (normal) | Initializers.cs:41:11:41:18 | exit Compound | | +| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | call to method | | | Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | exit Compound (normal) | | | Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:52:5:66:5 | {...} | | | Initializers.cs:51:10:51:13 | exit Test (normal) | Initializers.cs:51:10:51:13 | exit Test | | @@ -2342,8 +2378,10 @@ | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:50:64:54 | ... + ... | | | Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:46:64:61 | ... = ... | | | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | {...} | | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | | +| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | | +| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | this access | | | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | | +| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | call to method | | | LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:8:5:13:5 | {...} | | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 | | @@ -2558,9 +2596,11 @@ | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:31:99:31 | access to local variable x | | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | {...} | | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | | +| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | | +| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | this access | | +| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationB.cs:1:7:1:8 | this access | | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 | | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | call to method | | | MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:28:6:31 | null | | | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationB.cs:3:22:3:22 | 0 | | @@ -2588,6 +2628,9 @@ | MultiImplementationA.cs:8:16:8:16 | exit M (normal) | MultiImplementationA.cs:8:16:8:16 | exit M | | | MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | exception | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:23:8:32 | throw ... | | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:13:16:13:16 | this access | | +| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationB.cs:11:16:11:16 | this access | | +| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit | | | MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:20:13:20 | 0 | | | MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:24:16:24:16 | this access | | | MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:20 | ... = ... | | @@ -2615,11 +2658,13 @@ | MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:21:18:21 | 0 | | | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | MultiImplementationA.cs:18:9:18:22 | exit M2 | | | MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:13:16:13:16 | this access | | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | | +| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:22:20:31 | {...} | | +| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | | +| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | this access | | +| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationB.cs:18:12:18:13 | this access | | | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | MultiImplementationA.cs:20:12:20:13 | exit C2 | | | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | MultiImplementationA.cs:20:12:20:13 | exit C2 | | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | call to method | | | MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:24:20:29 | ...; | | | MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:28:20:28 | access to parameter i | | | MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | | @@ -2643,21 +2688,25 @@ | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | | | MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:32:24:34 | ... = ... | | | MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:34:24:34 | 0 | | -| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:20:22:20:31 | {...} | | +| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:11:7:11:8 | exit (normal) | | | MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:16:24:16 | access to property P | | | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | {...} | | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | | +| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | | +| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | this access | | +| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationB.cs:25:7:25:8 | this access | | | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 | | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | call to method | | | MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | | | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:34:30:37 | null | | | MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | MultiImplementationA.cs:30:21:30:23 | exit get_P3 | | | MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | exception | | MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:28:30:37 | throw ... | | | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | {...} | | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | | +| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | | +| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | this access | | +| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationB.cs:30:15:30:16 | this access | | | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 | | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | call to method | | | MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:14:36:28 | {...} | | | MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationB.cs:32:17:32:17 | 0 | | @@ -2672,6 +2721,8 @@ | MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:9:37:10 | exit M2 (abnormal) | exception | | MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:16:37:26 | throw ...; | | | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | {...} | | +| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | call to method | | | MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (normal) | | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:34:4:34 | 1 | | @@ -2694,7 +2745,9 @@ | MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | MultiImplementationB.cs:16:9:16:31 | exit M2 | | | MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | exception | | MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:21:16:30 | throw ... | | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:11:16:11:16 | this access | | +| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:22:18:36 | {...} | | +| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | call to method | | | MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:30:18:33 | null | | | MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | exception | | MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:24:18:34 | throw ...; | | @@ -2708,16 +2761,22 @@ | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:50:21:59 | throw ... | | | MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationB.cs:22:32:22:34 | ... = ... | | | MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:22:34:22:34 | 1 | | -| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:18:22:18:36 | {...} | | +| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationA.cs:11:7:11:8 | exit (normal) | | | MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:16:22:16 | access to property P | | | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | {...} | | +| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | call to method | | | MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | | | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | {...} | | +| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | call to method | | | MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | | | NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | {...} | | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | call to constructor Object | | +| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | call to constructor Object | | +| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | this access | | | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | | +| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | call to method | | | NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | | | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | | | NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | NullCoalescing.cs:3:9:3:10 | exit M1 | | @@ -2792,31 +2851,32 @@ | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | non-null | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:9:17:24 | ... = ... | | | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... | | -| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationB.cs:3:16:3:16 | this access | | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | | +| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationB.cs:3:16:3:16 | this access | | +| PartialImplementationA.cs:1:15:1:21 | exit (normal) | PartialImplementationA.cs:1:15:1:21 | exit | | +| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:27:3:29 | {...} | | +| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | | +| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | this access | | | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:12:3:18 | exit Partial | | +| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | call to method | | | PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | | | PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:20:3:20 | 0 | | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:20:3:20 | 0 | | -| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:5:16:5:16 | this access | | | PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:5:16:5:16 | this access | | | PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:20 | ... = ... | | -| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:20 | ... = ... | | -| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:3:16:3:16 | this access | | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | | +| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:22:4:24 | {...} | | +| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | | +| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | this access | | | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | PartialImplementationB.cs:4:12:4:18 | exit Partial | | +| PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | call to method | | | PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | | | PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:32:5:34 | ... = ... | | -| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:32:5:34 | ... = ... | | | PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:34:5:34 | 0 | | -| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:34:5:34 | 0 | | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationA.cs:3:27:3:29 | {...} | | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:4:22:4:24 | {...} | | -| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | access to property P | | +| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationA.cs:1:15:1:21 | exit (normal) | | | PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | access to property P | | | Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | {...} | | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | call to constructor Object | | +| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | call to constructor Object | | +| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | this access | | | Patterns.cs:3:7:3:14 | exit Patterns (normal) | Patterns.cs:3:7:3:14 | exit Patterns | | +| Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | call to method | | | Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | exit Patterns (normal) | | | Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:6:5:43:5 | {...} | | | Patterns.cs:5:10:5:11 | exit M1 (normal) | Patterns.cs:5:10:5:11 | exit M1 | | @@ -3045,8 +3105,10 @@ | Patterns.cs:97:13:97:39 | ...; | Patterns.cs:97:31:97:37 | "not C" | | | Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:13:97:38 | call to method WriteLine | | | PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | {...} | | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | call to constructor Object | | +| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | call to constructor Object | | +| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | this access | | | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | PostDominance.cs:3:7:3:19 | exit PostDominance | | +| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | call to method | | | PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | | | PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:6:5:8:5 | {...} | | | PostDominance.cs:5:10:5:11 | exit M1 (normal) | PostDominance.cs:5:10:5:11 | exit M1 | | @@ -3084,8 +3146,10 @@ | PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:27:21:27 | access to parameter s | | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:9:21:28 | call to method WriteLine | | | Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | {...} | | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | call to constructor Object | | +| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | call to constructor Object | | +| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | this access | | | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | Qualifiers.cs:1:7:1:16 | exit Qualifiers | | +| Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | call to method | | | Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | | | Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:28:7:31 | null | | | Qualifiers.cs:7:16:7:21 | exit Method (normal) | Qualifiers.cs:7:16:7:21 | exit Method | | @@ -3151,8 +3215,10 @@ | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:46 | call to method Method | | | Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:9:30:46 | ... = ... | | | Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | {...} | | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | call to constructor Object | | +| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | call to constructor Object | | +| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | this access | | | Switch.cs:3:7:3:12 | exit Switch (normal) | Switch.cs:3:7:3:12 | exit Switch | | +| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | call to method | | | Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | exit Switch (normal) | | | Switch.cs:5:10:5:11 | enter M1 | Switch.cs:6:5:8:5 | {...} | | | Switch.cs:5:10:5:11 | exit M1 (normal) | Switch.cs:5:10:5:11 | exit M1 | | @@ -3478,8 +3544,10 @@ | Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:47 | call to method WriteLine | | | Switch.cs:176:17:176:22 | break; | Switch.cs:163:10:163:12 | exit M16 (normal) | break | | TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | {...} | | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | call to constructor Object | | +| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | call to constructor Object | | +| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | this access | | | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | | +| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | call to method | | | TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | | | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:4:5:9:5 | {...} | | | TypeAccesses.cs:3:10:3:10 | exit M (normal) | TypeAccesses.cs:3:10:3:10 | exit M | | @@ -3503,8 +3571,10 @@ | TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:3:10:3:10 | exit M (normal) | | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:13:8:27 | Type t = ... | | | VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | {...} | | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | call to constructor Object | | +| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | call to constructor Object | | +| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | this access | | | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | VarDecls.cs:3:7:3:14 | exit VarDecls | | +| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | call to method | | | VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | | | VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:6:5:11:5 | {...} | | | VarDecls.cs:5:18:5:19 | exit M1 (normal) | VarDecls.cs:5:18:5:19 | exit M1 | | @@ -3554,8 +3624,10 @@ | VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:20:25:28 | ... ? ... : ... | | | VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:20:25:28 | ... ? ... : ... | | | VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | {...} | | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | call to constructor Object | | +| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | call to constructor Object | | +| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | this access | | | VarDecls.cs:28:11:28:11 | exit C (normal) | VarDecls.cs:28:11:28:11 | exit C | | +| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | call to method | | | VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | exit C (normal) | | | VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:51:28:53 | {...} | | | VarDecls.cs:28:41:28:47 | exit Dispose (normal) | VarDecls.cs:28:41:28:47 | exit Dispose | | @@ -3855,8 +3927,10 @@ | cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:72 | this access | | | cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:80 | ... = ... | | | cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:130:5:132:5 | {...} | | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | call to constructor Object | | +| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | call to constructor Object | | +| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | this access | | | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:129:5:129:15 | exit ControlFlow | | +| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | call to method | | | cflow.cs:130:5:132:5 | {...} | cflow.cs:131:9:131:18 | ...; | | | cflow.cs:131:9:131:13 | this access | cflow.cs:131:17:131:17 | access to parameter s | | | cflow.cs:131:9:131:17 | ... = ... | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | | @@ -4231,8 +4305,10 @@ | cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (normal) | , return | | cflow.cs:275:13:275:42 | ...; | cflow.cs:275:31:275:40 | "not dead" | | | cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:41 | call to method WriteLine | | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:24:282:27 | call to constructor ControlFlow | | +| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:24:282:27 | call to constructor ControlFlow | | +| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | this access | | | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:5:282:18 | exit ControlFlowSub | | +| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | call to method | | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:31:282:33 | {...} | | | cflow.cs:282:31:282:33 | {...} | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | | | cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | | @@ -4246,8 +4322,10 @@ | cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | | | cflow.cs:286:48:286:50 | {...} | cflow.cs:286:5:286:18 | exit ControlFlowSub (normal) | | | cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | {...} | | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | call to constructor Object | | +| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | call to constructor Object | | +| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | this access | | | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | cflow.cs:289:7:289:18 | exit DelegateCall | | +| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | call to method | | | cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | | | cflow.cs:291:12:291:12 | enter M | cflow.cs:291:38:291:38 | access to parameter f | | | cflow.cs:291:12:291:12 | exit M (normal) | cflow.cs:291:12:291:12 | exit M | | @@ -4255,8 +4333,10 @@ | cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:12:291:12 | exit M (normal) | | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:38:291:41 | delegate call | | | cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:52:296:54 | {...} | | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | call to constructor Object | | +| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | call to constructor Object | | +| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | this access | | | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | cflow.cs:296:5:296:25 | exit NegationInConstructor | | +| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | call to method | | | cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | | | cflow.cs:298:10:298:10 | enter M | cflow.cs:299:5:301:5 | {...} | | | cflow.cs:298:10:298:10 | exit M (normal) | cflow.cs:298:10:298:10 | exit M | | @@ -4276,8 +4356,10 @@ | cflow.cs:300:61:300:64 | null | cflow.cs:300:56:300:64 | ... != ... | | | cflow.cs:300:70:300:71 | "" | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | | | cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | {...} | | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | call to constructor Object | | +| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | call to constructor Object | | +| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | this access | | | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | cflow.cs:304:7:304:18 | exit LambdaGetter | | +| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | call to method | | | cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | | | cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | exit get__getter (normal) | | | cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:307:5:310:5 | {...} | | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected b/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected index 26e8d074b191..aff874814619 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected @@ -1,4 +1,4 @@ -| AccessorCalls.cs:1:7:1:19 | AccessorCalls | AccessorCalls.cs:1:7:1:19 | call to constructor Object | +| AccessorCalls.cs:1:7:1:19 | AccessorCalls | AccessorCalls.cs:1:7:1:19 | this access | | AccessorCalls.cs:5:23:5:25 | get_Item | AccessorCalls.cs:5:30:5:30 | access to parameter i | | AccessorCalls.cs:5:33:5:35 | set_Item | AccessorCalls.cs:5:37:5:39 | {...} | | AccessorCalls.cs:7:32:7:34 | add_Event | AccessorCalls.cs:7:36:7:38 | {...} | @@ -12,12 +12,12 @@ | AccessorCalls.cs:56:10:56:11 | M7 | AccessorCalls.cs:57:5:59:5 | {...} | | AccessorCalls.cs:61:10:61:11 | M8 | AccessorCalls.cs:62:5:64:5 | {...} | | AccessorCalls.cs:66:10:66:11 | M9 | AccessorCalls.cs:67:5:74:5 | {...} | -| ArrayCreation.cs:1:7:1:19 | ArrayCreation | ArrayCreation.cs:1:7:1:19 | call to constructor Object | +| ArrayCreation.cs:1:7:1:19 | ArrayCreation | ArrayCreation.cs:1:7:1:19 | this access | | ArrayCreation.cs:3:11:3:12 | M1 | ArrayCreation.cs:3:27:3:27 | 0 | | ArrayCreation.cs:5:12:5:13 | M2 | ArrayCreation.cs:5:28:5:28 | 0 | | ArrayCreation.cs:7:11:7:12 | M3 | ArrayCreation.cs:7:19:7:36 | 2 | | ArrayCreation.cs:9:12:9:13 | M4 | ArrayCreation.cs:9:20:9:52 | 2 | -| Assert.cs:5:7:5:17 | AssertTests | Assert.cs:5:7:5:17 | call to constructor Object | +| Assert.cs:5:7:5:17 | AssertTests | Assert.cs:5:7:5:17 | this access | | Assert.cs:7:10:7:11 | M1 | Assert.cs:8:5:12:5 | {...} | | Assert.cs:14:10:14:11 | M2 | Assert.cs:15:5:19:5 | {...} | | Assert.cs:21:10:21:11 | M3 | Assert.cs:22:5:26:5 | {...} | @@ -32,23 +32,23 @@ | Assert.cs:84:10:84:12 | M12 | Assert.cs:85:5:129:5 | {...} | | Assert.cs:131:18:131:32 | AssertTrueFalse | Assert.cs:135:5:136:5 | {...} | | Assert.cs:138:10:138:12 | M13 | Assert.cs:139:5:142:5 | {...} | -| Assignments.cs:1:7:1:17 | Assignments | Assignments.cs:1:7:1:17 | call to constructor Object | +| Assignments.cs:1:7:1:17 | Assignments | Assignments.cs:1:7:1:17 | this access | | Assignments.cs:3:10:3:10 | M | Assignments.cs:4:5:15:5 | {...} | | Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:33:14:35 | {...} | | Assignments.cs:17:40:17:40 | + | Assignments.cs:18:5:20:5 | {...} | -| BreakInTry.cs:1:7:1:16 | BreakInTry | BreakInTry.cs:1:7:1:16 | call to constructor Object | +| BreakInTry.cs:1:7:1:16 | BreakInTry | BreakInTry.cs:1:7:1:16 | this access | | BreakInTry.cs:3:10:3:11 | M1 | BreakInTry.cs:4:5:18:5 | {...} | | BreakInTry.cs:20:10:20:11 | M2 | BreakInTry.cs:21:5:36:5 | {...} | | BreakInTry.cs:38:10:38:11 | M3 | BreakInTry.cs:39:5:54:5 | {...} | | BreakInTry.cs:56:10:56:11 | M4 | BreakInTry.cs:57:5:71:5 | {...} | -| CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | +| CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | this access | | CompileTimeOperators.cs:5:9:5:15 | Default | CompileTimeOperators.cs:6:5:8:5 | {...} | | CompileTimeOperators.cs:10:9:10:14 | Sizeof | CompileTimeOperators.cs:11:5:13:5 | {...} | | CompileTimeOperators.cs:15:10:15:15 | Typeof | CompileTimeOperators.cs:16:5:18:5 | {...} | | CompileTimeOperators.cs:20:12:20:17 | Nameof | CompileTimeOperators.cs:21:5:23:5 | {...} | -| CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | +| CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | this access | | CompileTimeOperators.cs:28:10:28:10 | M | CompileTimeOperators.cs:29:5:41:5 | {...} | -| ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | +| ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | this access | | ConditionalAccess.cs:3:12:3:13 | M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | | ConditionalAccess.cs:5:10:5:11 | M2 | ConditionalAccess.cs:5:26:5:26 | access to parameter s | | ConditionalAccess.cs:7:10:7:11 | M3 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | @@ -59,7 +59,7 @@ | ConditionalAccess.cs:30:10:30:12 | Out | ConditionalAccess.cs:30:32:30:32 | 0 | | ConditionalAccess.cs:32:10:32:11 | M8 | ConditionalAccess.cs:33:5:36:5 | {...} | | ConditionalAccess.cs:41:26:41:38 | CommaJoinWith | ConditionalAccess.cs:41:70:41:71 | access to parameter s1 | -| Conditions.cs:1:7:1:16 | Conditions | Conditions.cs:1:7:1:16 | call to constructor Object | +| Conditions.cs:1:7:1:16 | Conditions | Conditions.cs:1:7:1:16 | this access | | Conditions.cs:3:10:3:19 | IncrOrDecr | Conditions.cs:4:5:9:5 | {...} | | Conditions.cs:11:9:11:10 | M1 | Conditions.cs:12:5:20:5 | {...} | | Conditions.cs:22:9:22:10 | M2 | Conditions.cs:23:5:31:5 | {...} | @@ -72,7 +72,7 @@ | Conditions.cs:113:10:113:11 | M9 | Conditions.cs:114:5:124:5 | {...} | | Conditions.cs:129:10:129:12 | M10 | Conditions.cs:130:5:141:5 | {...} | | Conditions.cs:143:10:143:12 | M11 | Conditions.cs:144:5:150:5 | {...} | -| ExitMethods.cs:6:7:6:17 | ExitMethods | ExitMethods.cs:6:7:6:17 | call to constructor Object | +| ExitMethods.cs:6:7:6:17 | ExitMethods | ExitMethods.cs:6:7:6:17 | this access | | ExitMethods.cs:8:10:8:11 | M1 | ExitMethods.cs:9:5:12:5 | {...} | | ExitMethods.cs:14:10:14:11 | M2 | ExitMethods.cs:15:5:18:5 | {...} | | ExitMethods.cs:20:10:20:11 | M3 | ExitMethods.cs:21:5:24:5 | {...} | @@ -99,7 +99,7 @@ | Extensions.cs:10:24:10:29 | ToBool | Extensions.cs:11:5:13:5 | {...} | | Extensions.cs:15:23:15:33 | CallToInt32 | Extensions.cs:15:48:15:50 | "0" | | Extensions.cs:20:17:20:20 | Main | Extensions.cs:21:5:26:5 | {...} | -| Finally.cs:3:14:3:20 | Finally | Finally.cs:3:14:3:20 | call to constructor Object | +| Finally.cs:3:14:3:20 | Finally | Finally.cs:3:14:3:20 | this access | | Finally.cs:7:10:7:11 | M1 | Finally.cs:8:5:17:5 | {...} | | Finally.cs:19:10:19:11 | M2 | Finally.cs:20:5:52:5 | {...} | | Finally.cs:54:10:54:11 | M3 | Finally.cs:55:5:72:5 | {...} | @@ -108,33 +108,36 @@ | Finally.cs:121:10:121:11 | M6 | Finally.cs:122:5:131:5 | {...} | | Finally.cs:133:10:133:11 | M7 | Finally.cs:134:5:145:5 | {...} | | Finally.cs:147:10:147:11 | M8 | Finally.cs:148:5:170:5 | {...} | -| Finally.cs:172:11:172:20 | ExceptionA | Finally.cs:172:11:172:20 | call to constructor Exception | -| Finally.cs:173:11:173:20 | ExceptionB | Finally.cs:173:11:173:20 | call to constructor Exception | -| Finally.cs:174:11:174:20 | ExceptionC | Finally.cs:174:11:174:20 | call to constructor Exception | +| Finally.cs:172:11:172:20 | ExceptionA | Finally.cs:172:11:172:20 | this access | +| Finally.cs:173:11:173:20 | ExceptionB | Finally.cs:173:11:173:20 | this access | +| Finally.cs:174:11:174:20 | ExceptionC | Finally.cs:174:11:174:20 | this access | | Finally.cs:176:10:176:11 | M9 | Finally.cs:177:5:193:5 | {...} | | Finally.cs:195:10:195:12 | M10 | Finally.cs:196:5:214:5 | {...} | | Finally.cs:216:10:216:12 | M11 | Finally.cs:217:5:231:5 | {...} | | Finally.cs:233:10:233:12 | M12 | Finally.cs:234:5:261:5 | {...} | | Finally.cs:263:10:263:12 | M13 | Finally.cs:264:5:274:5 | {...} | -| Foreach.cs:4:7:4:13 | Foreach | Foreach.cs:4:7:4:13 | call to constructor Object | +| Foreach.cs:4:7:4:13 | Foreach | Foreach.cs:4:7:4:13 | this access | | Foreach.cs:6:10:6:11 | M1 | Foreach.cs:7:5:10:5 | {...} | | Foreach.cs:12:10:12:11 | M2 | Foreach.cs:13:5:16:5 | {...} | | Foreach.cs:18:10:18:11 | M3 | Foreach.cs:19:5:22:5 | {...} | | Foreach.cs:24:10:24:11 | M4 | Foreach.cs:25:5:28:5 | {...} | | Foreach.cs:30:10:30:11 | M5 | Foreach.cs:31:5:34:5 | {...} | | Foreach.cs:36:10:36:11 | M6 | Foreach.cs:37:5:40:5 | {...} | +| Initializers.cs:3:7:3:18 | | Initializers.cs:5:9:5:9 | this access | | Initializers.cs:3:7:3:18 | Initializers | Initializers.cs:3:7:3:18 | {...} | -| Initializers.cs:8:5:8:16 | Initializers | Initializers.cs:8:5:8:16 | call to constructor Object | -| Initializers.cs:10:5:10:16 | Initializers | Initializers.cs:10:5:10:16 | call to constructor Object | +| Initializers.cs:8:5:8:16 | Initializers | Initializers.cs:8:5:8:16 | this access | +| Initializers.cs:10:5:10:16 | Initializers | Initializers.cs:10:5:10:16 | this access | | Initializers.cs:12:10:12:10 | M | Initializers.cs:13:5:16:5 | {...} | -| Initializers.cs:20:11:20:23 | NoConstructor | Initializers.cs:20:11:20:23 | call to constructor Object | -| Initializers.cs:31:9:31:11 | Sub | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | +| Initializers.cs:20:11:20:23 | | Initializers.cs:22:23:22:23 | this access | +| Initializers.cs:20:11:20:23 | NoConstructor | Initializers.cs:20:11:20:23 | this access | +| Initializers.cs:26:11:26:13 | | Initializers.cs:28:13:28:13 | this access | +| Initializers.cs:31:9:31:11 | Sub | Initializers.cs:31:9:31:11 | this access | | Initializers.cs:33:9:33:11 | Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | -| Initializers.cs:35:9:35:11 | Sub | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | -| Initializers.cs:39:7:39:23 | IndexInitializers | Initializers.cs:39:7:39:23 | call to constructor Object | -| Initializers.cs:41:11:41:18 | Compound | Initializers.cs:41:11:41:18 | call to constructor Object | +| Initializers.cs:35:9:35:11 | Sub | Initializers.cs:35:9:35:11 | this access | +| Initializers.cs:39:7:39:23 | IndexInitializers | Initializers.cs:39:7:39:23 | this access | +| Initializers.cs:41:11:41:18 | Compound | Initializers.cs:41:11:41:18 | this access | | Initializers.cs:51:10:51:13 | Test | Initializers.cs:52:5:66:5 | {...} | -| LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | +| LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | this access | | LoopUnrolling.cs:7:10:7:11 | M1 | LoopUnrolling.cs:8:5:13:5 | {...} | | LoopUnrolling.cs:15:10:15:11 | M2 | LoopUnrolling.cs:16:5:20:5 | {...} | | LoopUnrolling.cs:22:10:22:11 | M3 | LoopUnrolling.cs:23:5:27:5 | {...} | @@ -146,8 +149,8 @@ | LoopUnrolling.cs:76:10:76:11 | M9 | LoopUnrolling.cs:77:5:83:5 | {...} | | LoopUnrolling.cs:85:10:85:12 | M10 | LoopUnrolling.cs:86:5:92:5 | {...} | | LoopUnrolling.cs:94:10:94:12 | M11 | LoopUnrolling.cs:95:5:101:5 | {...} | -| MultiImplementationA.cs:4:7:4:8 | C1 | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | -| MultiImplementationA.cs:4:7:4:8 | C1 | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | C1 | MultiImplementationA.cs:4:7:4:8 | this access | +| MultiImplementationA.cs:4:7:4:8 | C1 | MultiImplementationB.cs:1:7:1:8 | this access | | MultiImplementationA.cs:6:22:6:31 | get_P1 | MultiImplementationA.cs:6:28:6:31 | null | | MultiImplementationA.cs:6:22:6:31 | get_P1 | MultiImplementationB.cs:3:22:3:22 | 0 | | MultiImplementationA.cs:7:21:7:23 | get_P2 | MultiImplementationA.cs:7:25:7:39 | {...} | @@ -156,6 +159,8 @@ | MultiImplementationA.cs:7:41:7:43 | set_P2 | MultiImplementationB.cs:4:43:4:45 | {...} | | MultiImplementationA.cs:8:16:8:16 | M | MultiImplementationA.cs:8:29:8:32 | null | | MultiImplementationA.cs:8:16:8:16 | M | MultiImplementationB.cs:5:23:5:23 | 2 | +| MultiImplementationA.cs:11:7:11:8 | | MultiImplementationA.cs:13:16:13:16 | this access | +| MultiImplementationA.cs:11:7:11:8 | | MultiImplementationB.cs:11:16:11:16 | this access | | MultiImplementationA.cs:14:31:14:31 | get_Item | MultiImplementationA.cs:14:31:14:31 | access to parameter i | | MultiImplementationA.cs:14:31:14:31 | get_Item | MultiImplementationB.cs:12:37:12:40 | null | | MultiImplementationA.cs:15:36:15:38 | get_Item | MultiImplementationA.cs:15:40:15:52 | {...} | @@ -165,33 +170,34 @@ | MultiImplementationA.cs:16:17:16:18 | M1 | MultiImplementationA.cs:17:5:19:5 | {...} | | MultiImplementationA.cs:16:17:16:18 | M1 | MultiImplementationB.cs:15:5:17:5 | {...} | | MultiImplementationA.cs:18:9:18:22 | M2 | MultiImplementationA.cs:18:21:18:21 | 0 | -| MultiImplementationA.cs:20:12:20:13 | C2 | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | -| MultiImplementationA.cs:20:12:20:13 | C2 | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationA.cs:20:12:20:13 | C2 | MultiImplementationA.cs:20:12:20:13 | this access | +| MultiImplementationA.cs:20:12:20:13 | C2 | MultiImplementationB.cs:18:12:18:13 | this access | | MultiImplementationA.cs:21:12:21:13 | C2 | MultiImplementationA.cs:21:24:21:24 | 0 | | MultiImplementationA.cs:21:12:21:13 | C2 | MultiImplementationB.cs:19:24:19:24 | 1 | | MultiImplementationA.cs:22:6:22:7 | ~C2 | MultiImplementationA.cs:22:11:22:13 | {...} | | MultiImplementationA.cs:22:6:22:7 | ~C2 | MultiImplementationB.cs:20:11:20:25 | {...} | | MultiImplementationA.cs:23:28:23:35 | implicit conversion | MultiImplementationA.cs:23:50:23:53 | null | | MultiImplementationA.cs:23:28:23:35 | implicit conversion | MultiImplementationB.cs:21:56:21:59 | null | -| MultiImplementationA.cs:28:7:28:8 | C3 | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | -| MultiImplementationA.cs:28:7:28:8 | C3 | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | C3 | MultiImplementationA.cs:28:7:28:8 | this access | +| MultiImplementationA.cs:28:7:28:8 | C3 | MultiImplementationB.cs:25:7:25:8 | this access | | MultiImplementationA.cs:30:21:30:23 | get_P3 | MultiImplementationA.cs:30:34:30:37 | null | -| MultiImplementationA.cs:34:15:34:16 | C4 | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | -| MultiImplementationA.cs:34:15:34:16 | C4 | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | C4 | MultiImplementationA.cs:34:15:34:16 | this access | +| MultiImplementationA.cs:34:15:34:16 | C4 | MultiImplementationB.cs:30:15:30:16 | this access | | MultiImplementationA.cs:36:9:36:10 | M1 | MultiImplementationA.cs:36:14:36:28 | {...} | | MultiImplementationA.cs:36:9:36:10 | M1 | MultiImplementationB.cs:32:17:32:17 | 0 | | MultiImplementationA.cs:37:9:37:10 | M2 | MultiImplementationA.cs:37:14:37:28 | {...} | | MultiImplementationB.cs:16:9:16:31 | M2 | MultiImplementationB.cs:16:27:16:30 | null | -| NullCoalescing.cs:1:7:1:20 | NullCoalescing | NullCoalescing.cs:1:7:1:20 | call to constructor Object | +| NullCoalescing.cs:1:7:1:20 | NullCoalescing | NullCoalescing.cs:1:7:1:20 | this access | | NullCoalescing.cs:3:9:3:10 | M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | | NullCoalescing.cs:5:9:5:10 | M2 | NullCoalescing.cs:5:25:5:25 | access to parameter b | | NullCoalescing.cs:7:12:7:13 | M3 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | | NullCoalescing.cs:9:12:9:13 | M4 | NullCoalescing.cs:9:37:9:37 | access to parameter b | | NullCoalescing.cs:11:9:11:10 | M5 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | | NullCoalescing.cs:13:10:13:11 | M6 | NullCoalescing.cs:14:5:18:5 | {...} | -| PartialImplementationA.cs:3:12:3:18 | Partial | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | -| PartialImplementationB.cs:4:12:4:18 | Partial | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | -| Patterns.cs:3:7:3:14 | Patterns | Patterns.cs:3:7:3:14 | call to constructor Object | +| PartialImplementationA.cs:1:15:1:21 | | PartialImplementationB.cs:3:16:3:16 | this access | +| PartialImplementationA.cs:3:12:3:18 | Partial | PartialImplementationA.cs:3:12:3:18 | this access | +| PartialImplementationB.cs:4:12:4:18 | Partial | PartialImplementationB.cs:4:12:4:18 | this access | +| Patterns.cs:3:7:3:14 | Patterns | Patterns.cs:3:7:3:14 | this access | | Patterns.cs:5:10:5:11 | M1 | Patterns.cs:6:5:43:5 | {...} | | Patterns.cs:47:24:47:25 | M2 | Patterns.cs:48:9:48:9 | access to parameter c | | Patterns.cs:50:24:50:25 | M3 | Patterns.cs:51:9:51:9 | access to parameter c | @@ -202,15 +208,15 @@ | Patterns.cs:85:26:85:27 | M8 | Patterns.cs:85:39:85:39 | access to parameter i | | Patterns.cs:87:26:87:27 | M9 | Patterns.cs:87:39:87:39 | access to parameter i | | Patterns.cs:93:17:93:19 | M10 | Patterns.cs:94:5:99:5 | {...} | -| PostDominance.cs:3:7:3:19 | PostDominance | PostDominance.cs:3:7:3:19 | call to constructor Object | +| PostDominance.cs:3:7:3:19 | PostDominance | PostDominance.cs:3:7:3:19 | this access | | PostDominance.cs:5:10:5:11 | M1 | PostDominance.cs:6:5:8:5 | {...} | | PostDominance.cs:10:10:10:11 | M2 | PostDominance.cs:11:5:15:5 | {...} | | PostDominance.cs:17:10:17:11 | M3 | PostDominance.cs:18:5:22:5 | {...} | -| Qualifiers.cs:1:7:1:16 | Qualifiers | Qualifiers.cs:1:7:1:16 | call to constructor Object | +| Qualifiers.cs:1:7:1:16 | Qualifiers | Qualifiers.cs:1:7:1:16 | this access | | Qualifiers.cs:7:16:7:21 | Method | Qualifiers.cs:7:28:7:31 | null | | Qualifiers.cs:8:23:8:34 | StaticMethod | Qualifiers.cs:8:41:8:44 | null | | Qualifiers.cs:10:10:10:10 | M | Qualifiers.cs:11:5:31:5 | {...} | -| Switch.cs:3:7:3:12 | Switch | Switch.cs:3:7:3:12 | call to constructor Object | +| Switch.cs:3:7:3:12 | Switch | Switch.cs:3:7:3:12 | this access | | Switch.cs:5:10:5:11 | M1 | Switch.cs:6:5:8:5 | {...} | | Switch.cs:10:10:10:11 | M2 | Switch.cs:11:5:33:5 | {...} | | Switch.cs:35:10:35:11 | M3 | Switch.cs:36:5:42:5 | {...} | @@ -228,13 +234,13 @@ | Switch.cs:144:9:144:11 | M14 | Switch.cs:145:5:152:5 | {...} | | Switch.cs:154:10:154:12 | M15 | Switch.cs:155:5:161:5 | {...} | | Switch.cs:163:10:163:12 | M16 | Switch.cs:164:5:178:5 | {...} | -| TypeAccesses.cs:1:7:1:18 | TypeAccesses | TypeAccesses.cs:1:7:1:18 | call to constructor Object | +| TypeAccesses.cs:1:7:1:18 | TypeAccesses | TypeAccesses.cs:1:7:1:18 | this access | | TypeAccesses.cs:3:10:3:10 | M | TypeAccesses.cs:4:5:9:5 | {...} | -| VarDecls.cs:3:7:3:14 | VarDecls | VarDecls.cs:3:7:3:14 | call to constructor Object | +| VarDecls.cs:3:7:3:14 | VarDecls | VarDecls.cs:3:7:3:14 | this access | | VarDecls.cs:5:18:5:19 | M1 | VarDecls.cs:6:5:11:5 | {...} | | VarDecls.cs:13:12:13:13 | M2 | VarDecls.cs:14:5:17:5 | {...} | | VarDecls.cs:19:7:19:8 | M3 | VarDecls.cs:20:5:26:5 | {...} | -| VarDecls.cs:28:11:28:11 | C | VarDecls.cs:28:11:28:11 | call to constructor Object | +| VarDecls.cs:28:11:28:11 | C | VarDecls.cs:28:11:28:11 | this access | | VarDecls.cs:28:41:28:47 | Dispose | VarDecls.cs:28:51:28:53 | {...} | | cflow.cs:5:17:5:20 | Main | cflow.cs:6:5:35:5 | {...} | | cflow.cs:37:17:37:22 | Switch | cflow.cs:38:5:68:5 | {...} | @@ -245,7 +251,7 @@ | cflow.cs:119:20:119:21 | M5 | cflow.cs:120:5:124:5 | {...} | | cflow.cs:127:19:127:21 | get_Prop | cflow.cs:127:23:127:60 | {...} | | cflow.cs:127:62:127:64 | set_Prop | cflow.cs:127:66:127:83 | {...} | -| cflow.cs:129:5:129:15 | ControlFlow | cflow.cs:129:5:129:15 | call to constructor Object | +| cflow.cs:129:5:129:15 | ControlFlow | cflow.cs:129:5:129:15 | this access | | cflow.cs:134:5:134:15 | ControlFlow | cflow.cs:134:31:134:31 | access to parameter i | | cflow.cs:136:12:136:22 | ControlFlow | cflow.cs:136:33:136:33 | 0 | | cflow.cs:138:40:138:40 | + | cflow.cs:139:5:142:5 | {...} | @@ -261,13 +267,13 @@ | cflow.cs:224:10:224:16 | Foreach | cflow.cs:225:5:238:5 | {...} | | cflow.cs:240:10:240:13 | Goto | cflow.cs:241:5:259:5 | {...} | | cflow.cs:261:49:261:53 | Yield | cflow.cs:262:5:277:5 | {...} | -| cflow.cs:282:5:282:18 | ControlFlowSub | cflow.cs:282:24:282:27 | call to constructor ControlFlow | +| cflow.cs:282:5:282:18 | ControlFlowSub | cflow.cs:282:5:282:18 | this access | | cflow.cs:284:5:284:18 | ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | | cflow.cs:286:5:286:18 | ControlFlowSub | cflow.cs:286:34:286:34 | access to parameter i | -| cflow.cs:289:7:289:18 | DelegateCall | cflow.cs:289:7:289:18 | call to constructor Object | +| cflow.cs:289:7:289:18 | DelegateCall | cflow.cs:289:7:289:18 | this access | | cflow.cs:291:12:291:12 | M | cflow.cs:291:38:291:38 | access to parameter f | -| cflow.cs:296:5:296:25 | NegationInConstructor | cflow.cs:296:5:296:25 | call to constructor Object | +| cflow.cs:296:5:296:25 | NegationInConstructor | cflow.cs:296:5:296:25 | this access | | cflow.cs:298:10:298:10 | M | cflow.cs:299:5:301:5 | {...} | -| cflow.cs:304:7:304:18 | LambdaGetter | cflow.cs:304:7:304:18 | call to constructor Object | +| cflow.cs:304:7:304:18 | LambdaGetter | cflow.cs:304:7:304:18 | this access | | cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:307:5:310:5 | {...} | | cflow.cs:306:60:310:5 | get__getter | cflow.cs:306:60:310:5 | (...) => ... | diff --git a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected index a930349e930c..712e379e3313 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected @@ -117,6 +117,8 @@ | not | Guards.cs:162:24:162:24 | access to parameter o | | not | Guards.cs:285:17:285:17 | access to parameter o | | not | Guards.cs:287:17:287:17 | access to parameter o | +| not null | Assert.cs:5:7:5:17 | call to method | +| not null | Assert.cs:5:7:5:17 | this access | | not null | Assert.cs:9:20:9:20 | access to parameter b | | not null | Assert.cs:9:31:9:32 | "" | | not null | Assert.cs:10:9:10:13 | access to type Debug | @@ -228,6 +230,8 @@ | not null | Assert.cs:94:16:94:24 | ... && ... | | not null | Assert.cs:94:22:94:24 | !... | | not null | Assert.cs:94:23:94:24 | access to parameter b2 | +| not null | Collections.cs:7:14:7:24 | call to method | +| not null | Collections.cs:7:14:7:24 | this access | | not null | Collections.cs:11:13:11:13 | access to local variable b | | not null | Collections.cs:11:13:11:32 | Boolean b = ... | | not null | Collections.cs:11:17:11:20 | access to parameter args | @@ -496,6 +500,8 @@ | not null | Collections.cs:102:9:102:15 | access to type Console | | not null | Collections.cs:102:9:102:31 | call to method WriteLine | | not null | Collections.cs:102:27:102:30 | access to parameter args | +| not null | Guards.cs:3:14:3:19 | call to method | +| not null | Guards.cs:3:14:3:19 | this access | | not null | Guards.cs:10:13:10:25 | !... | | not null | Guards.cs:10:14:10:25 | !... | | not null | Guards.cs:10:16:10:24 | ... == ... | diff --git a/csharp/ql/test/library-tests/conversion/operator/PrintAst.expected b/csharp/ql/test/library-tests/conversion/operator/PrintAst.expected index 47f1db09efe8..89a12e9a1707 100644 --- a/csharp/ql/test/library-tests/conversion/operator/PrintAst.expected +++ b/csharp/ql/test/library-tests/conversion/operator/PrintAst.expected @@ -1,6 +1,6 @@ Operator.cs: # 3| [Class] C -# 5| 5: [ImplicitConversionOperator] implicit conversion +# 5| 6: [ImplicitConversionOperator] implicit conversion # 5| -1: [TypeMention] C #-----| 2: (Parameters) # 5| 0: [Parameter] i @@ -8,11 +8,11 @@ Operator.cs: # 5| 4: [BlockStmt] {...} # 5| 0: [ReturnStmt] return ...; # 5| 0: [NullLiteral] null -# 7| 6: [Field] x1 +# 7| 7: [Field] x1 # 7| -1: [TypeMention] int -# 8| 7: [Field] x2 +# 8| 8: [Field] x2 # 8| -1: [TypeMention] C -# 11| 8: [Method] M +# 11| 9: [Method] M # 11| -1: [TypeMention] Void # 12| 4: [BlockStmt] {...} # 13| 0: [ExprStmt] ...; diff --git a/csharp/ql/test/library-tests/csharp10/fileScopedNamespace.expected b/csharp/ql/test/library-tests/csharp10/fileScopedNamespace.expected index 34f517f59bb6..5db33c2a421c 100644 --- a/csharp/ql/test/library-tests/csharp10/fileScopedNamespace.expected +++ b/csharp/ql/test/library-tests/csharp10/fileScopedNamespace.expected @@ -1,4 +1,5 @@ fileScopedNamespace +| FileScopedNamespace.cs:1:11:1:31 | MyFileScopedNamespace | FileScopedNamespace.cs:3:14:3:39 | | | FileScopedNamespace.cs:1:11:1:31 | MyFileScopedNamespace | FileScopedNamespace.cs:3:14:3:39 | MyFileScopedNamespaceClass | | FileScopedNamespace.cs:1:11:1:31 | MyFileScopedNamespace | FileScopedNamespace.cs:5:29:5:35 | myField | | FileScopedNamespace.cs:1:11:1:31 | MyFileScopedNamespace | FileScopedNamespace.cs:6:19:6:24 | MyProp | diff --git a/csharp/ql/test/library-tests/csharp11/PrintAst.expected b/csharp/ql/test/library-tests/csharp11/PrintAst.expected index 1de7ff429284..391c41540ece 100644 --- a/csharp/ql/test/library-tests/csharp11/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp11/PrintAst.expected @@ -1,10 +1,10 @@ CheckedOperators.cs: # 1| [NamespaceDeclaration] namespace ... { ... } # 3| 1: [Class] Number -# 5| 4: [Property] Value +# 5| 5: [Property] Value # 5| -1: [TypeMention] int # 5| 3: [Getter] get_Value -# 7| 5: [InstanceConstructor] Number +# 7| 6: [InstanceConstructor] Number #-----| 2: (Parameters) # 7| 0: [Parameter] n # 7| -1: [TypeMention] int @@ -12,7 +12,7 @@ CheckedOperators.cs: # 7| 0: [PropertyCall] access to property Value # 7| -1: [ThisAccess] this access # 7| 1: [ParameterAccess] access to parameter n -# 9| 6: [CheckedAddOperator] checked + +# 9| 7: [CheckedAddOperator] checked + # 9| -1: [TypeMention] Number #-----| 2: (Parameters) # 9| 0: [Parameter] n1 @@ -27,7 +27,7 @@ CheckedOperators.cs: # 10| -1: [ParameterAccess] access to parameter n1 # 10| 1: [PropertyCall] access to property Value # 10| -1: [ParameterAccess] access to parameter n2 -# 12| 7: [AddOperator] + +# 12| 8: [AddOperator] + # 12| -1: [TypeMention] Number #-----| 2: (Parameters) # 12| 0: [Parameter] n1 @@ -41,7 +41,7 @@ CheckedOperators.cs: # 13| -1: [ParameterAccess] access to parameter n1 # 13| 1: [PropertyCall] access to property Value # 13| -1: [ParameterAccess] access to parameter n2 -# 15| 8: [CheckedSubOperator] checked - +# 15| 9: [CheckedSubOperator] checked - # 15| -1: [TypeMention] Number #-----| 2: (Parameters) # 15| 0: [Parameter] n1 @@ -56,7 +56,7 @@ CheckedOperators.cs: # 16| -1: [ParameterAccess] access to parameter n1 # 16| 1: [PropertyCall] access to property Value # 16| -1: [ParameterAccess] access to parameter n2 -# 18| 9: [SubOperator] - +# 18| 10: [SubOperator] - # 18| -1: [TypeMention] Number #-----| 2: (Parameters) # 18| 0: [Parameter] n1 @@ -70,7 +70,7 @@ CheckedOperators.cs: # 19| -1: [ParameterAccess] access to parameter n1 # 19| 1: [PropertyCall] access to property Value # 19| -1: [ParameterAccess] access to parameter n2 -# 21| 10: [CheckedMulOperator] checked * +# 21| 11: [CheckedMulOperator] checked * # 21| -1: [TypeMention] Number #-----| 2: (Parameters) # 21| 0: [Parameter] n1 @@ -85,7 +85,7 @@ CheckedOperators.cs: # 22| -1: [ParameterAccess] access to parameter n1 # 22| 1: [PropertyCall] access to property Value # 22| -1: [ParameterAccess] access to parameter n2 -# 24| 11: [MulOperator] * +# 24| 12: [MulOperator] * # 24| -1: [TypeMention] Number #-----| 2: (Parameters) # 24| 0: [Parameter] n1 @@ -99,7 +99,7 @@ CheckedOperators.cs: # 25| -1: [ParameterAccess] access to parameter n1 # 25| 1: [PropertyCall] access to property Value # 25| -1: [ParameterAccess] access to parameter n2 -# 27| 12: [CheckedDivOperator] checked / +# 27| 13: [CheckedDivOperator] checked / # 27| -1: [TypeMention] Number #-----| 2: (Parameters) # 27| 0: [Parameter] n1 @@ -114,7 +114,7 @@ CheckedOperators.cs: # 28| -1: [ParameterAccess] access to parameter n1 # 28| 1: [PropertyCall] access to property Value # 28| -1: [ParameterAccess] access to parameter n2 -# 30| 13: [DivOperator] / +# 30| 14: [DivOperator] / # 30| -1: [TypeMention] Number #-----| 2: (Parameters) # 30| 0: [Parameter] n1 @@ -128,7 +128,7 @@ CheckedOperators.cs: # 31| -1: [ParameterAccess] access to parameter n1 # 31| 1: [PropertyCall] access to property Value # 31| -1: [ParameterAccess] access to parameter n2 -# 33| 14: [CheckedMinusOperator] checked - +# 33| 15: [CheckedMinusOperator] checked - # 33| -1: [TypeMention] Number #-----| 2: (Parameters) # 33| 0: [Parameter] n @@ -139,7 +139,7 @@ CheckedOperators.cs: # 34| 0: [UnaryMinusExpr] -... # 34| 0: [PropertyCall] access to property Value # 34| -1: [ParameterAccess] access to parameter n -# 36| 15: [MinusOperator] - +# 36| 16: [MinusOperator] - # 36| -1: [TypeMention] Number #-----| 2: (Parameters) # 36| 0: [Parameter] n @@ -149,7 +149,7 @@ CheckedOperators.cs: # 37| 0: [UnaryMinusExpr] -... # 37| 0: [PropertyCall] access to property Value # 37| -1: [ParameterAccess] access to parameter n -# 39| 16: [CheckedIncrementOperator] checked ++ +# 39| 17: [CheckedIncrementOperator] checked ++ # 39| -1: [TypeMention] Number #-----| 2: (Parameters) # 39| 0: [Parameter] n @@ -161,7 +161,7 @@ CheckedOperators.cs: # 40| 0: [PropertyCall] access to property Value # 40| -1: [ParameterAccess] access to parameter n # 40| 1: [IntLiteral] 1 -# 42| 17: [IncrementOperator] ++ +# 42| 18: [IncrementOperator] ++ # 42| -1: [TypeMention] Number #-----| 2: (Parameters) # 42| 0: [Parameter] n @@ -172,7 +172,7 @@ CheckedOperators.cs: # 43| 0: [PropertyCall] access to property Value # 43| -1: [ParameterAccess] access to parameter n # 43| 1: [IntLiteral] 1 -# 45| 18: [CheckedDecrementOperator] checked -- +# 45| 19: [CheckedDecrementOperator] checked -- # 45| -1: [TypeMention] Number #-----| 2: (Parameters) # 45| 0: [Parameter] n @@ -184,7 +184,7 @@ CheckedOperators.cs: # 46| 0: [PropertyCall] access to property Value # 46| -1: [ParameterAccess] access to parameter n # 46| 1: [IntLiteral] 1 -# 48| 19: [DecrementOperator] -- +# 48| 20: [DecrementOperator] -- # 48| -1: [TypeMention] Number #-----| 2: (Parameters) # 48| 0: [Parameter] n @@ -195,7 +195,7 @@ CheckedOperators.cs: # 49| 0: [PropertyCall] access to property Value # 49| -1: [ParameterAccess] access to parameter n # 49| 1: [IntLiteral] 1 -# 51| 20: [ExplicitConversionOperator] explicit conversion +# 51| 21: [ExplicitConversionOperator] explicit conversion # 51| -1: [TypeMention] short #-----| 2: (Parameters) # 51| 0: [Parameter] n @@ -205,7 +205,7 @@ CheckedOperators.cs: # 52| 0: [TypeMention] short # 52| 1: [PropertyCall] access to property Value # 52| -1: [ParameterAccess] access to parameter n -# 54| 21: [CheckedExplicitConversionOperator] checked explicit conversion +# 54| 22: [CheckedExplicitConversionOperator] checked explicit conversion # 54| -1: [TypeMention] short #-----| 2: (Parameters) # 54| 0: [Parameter] n @@ -240,22 +240,22 @@ FileScoped1.cs: # 19| [Enum] E1 # 21| [DelegateType] D1 # 23| [RecordClass] R1 -# 23| 12: [NEOperator] != +# 23| 13: [NEOperator] != #-----| 2: (Parameters) # 23| 0: [Parameter] left # 23| 1: [Parameter] right -# 23| 13: [EQOperator] == +# 23| 14: [EQOperator] == #-----| 2: (Parameters) # 23| 0: [Parameter] left # 23| 1: [Parameter] right -# 23| 14: [Property] EqualityContract +# 23| 15: [Property] EqualityContract # 23| 3: [Getter] get_EqualityContract # 25| [RecordStruct] RS1 -# 25| 10: [NEOperator] != +# 25| 11: [NEOperator] != #-----| 2: (Parameters) # 25| 0: [Parameter] left # 25| 1: [Parameter] right -# 25| 11: [EQOperator] == +# 25| 12: [EQOperator] == #-----| 2: (Parameters) # 25| 0: [Parameter] left # 25| 1: [Parameter] right @@ -280,22 +280,22 @@ FileScoped2.cs: # 17| [Enum] E1 # 19| [DelegateType] D1 # 21| [RecordClass] R1 -# 21| 12: [NEOperator] != +# 21| 13: [NEOperator] != #-----| 2: (Parameters) # 21| 0: [Parameter] left # 21| 1: [Parameter] right -# 21| 13: [EQOperator] == +# 21| 14: [EQOperator] == #-----| 2: (Parameters) # 21| 0: [Parameter] left # 21| 1: [Parameter] right -# 21| 14: [Property] EqualityContract +# 21| 15: [Property] EqualityContract # 21| 3: [Getter] get_EqualityContract # 23| [RecordStruct] RS1 -# 23| 10: [NEOperator] != +# 23| 11: [NEOperator] != #-----| 2: (Parameters) # 23| 0: [Parameter] left # 23| 1: [Parameter] right -# 23| 11: [EQOperator] == +# 23| 12: [EQOperator] == #-----| 2: (Parameters) # 23| 0: [Parameter] left # 23| 1: [Parameter] right @@ -333,21 +333,21 @@ GenericAttribute.cs: #-----| 3: (Base types) # 7| 0: [TypeMention] Attribute # 9| [Class] TestGenericAttribute -# 13| 5: [Method] M1 +# 13| 6: [Method] M1 # 13| -1: [TypeMention] Void #-----| 0: (Attributes) # 12| 1: [GenericDefaultAttribute] [MyGeneric(...)] # 12| 0: [TypeMention] MyGenericAttribute # 12| 1: [TypeMention] int # 13| 4: [BlockStmt] {...} -# 16| 6: [Method] M2 +# 16| 7: [Method] M2 # 16| -1: [TypeMention] Void #-----| 0: (Attributes) # 15| 1: [GenericDefaultAttribute] [MyGeneric(...)] # 15| 0: [TypeMention] MyGenericAttribute # 15| 1: [TypeMention] string # 16| 4: [BlockStmt] {...} -# 19| 7: [Method] M3 +# 19| 8: [Method] M3 # 19| -1: [TypeMention] Void #-----| 0: (Attributes) # 18| 1: [GenericDefaultAttribute] [MyGeneric2(...)] @@ -355,7 +355,7 @@ GenericAttribute.cs: # 18| 1: [TypeMention] int # 18| 2: [TypeMention] string # 19| 4: [BlockStmt] {...} -# 22| 8: [Method] M4 +# 22| 9: [Method] M4 # 22| -1: [TypeMention] int #-----| 0: (Attributes) # 21| 1: [GenericReturnAttribute] [return: MyGeneric(...)] @@ -366,7 +366,7 @@ GenericAttribute.cs: # 22| 0: [IntLiteral] 0 ListPattern.cs: # 3| [Class] ListPattern -# 5| 5: [Method] M1 +# 5| 6: [Method] M1 # 5| -1: [TypeMention] Void #-----| 2: (Parameters) # 5| 0: [Parameter] x @@ -430,7 +430,7 @@ ListPattern.cs: # 13| 1: [ConstantPatternExpr,IntLiteral] 5 # 13| 2: [ConstantPatternExpr,IntLiteral] 2 # 13| 1: [BlockStmt] {...} -# 16| 6: [Method] M2 +# 16| 7: [Method] M2 # 16| -1: [TypeMention] Void #-----| 2: (Parameters) # 16| 0: [Parameter] x @@ -482,19 +482,19 @@ ListPattern.cs: # 35| 15: [BreakStmt] break; NameofScope.cs: # 3| [Class] MyAttributeTestClass -# 5| 5: [Class] MyAttribute +# 5| 6: [Class] MyAttribute #-----| 3: (Base types) # 5| 0: [TypeMention] Attribute -# 7| 4: [Field] S +# 7| 5: [Field] S # 7| -1: [TypeMention] string -# 8| 5: [InstanceConstructor] MyAttribute +# 8| 6: [InstanceConstructor] MyAttribute #-----| 2: (Parameters) # 8| 0: [Parameter] s # 8| -1: [TypeMention] string # 8| 4: [AssignExpr] ... = ... # 8| 0: [FieldAccess] access to field S # 8| 1: [ParameterAccess] access to parameter s -# 12| 6: [Method] M1`1 +# 12| 7: [Method] M1`1 # 12| -1: [TypeMention] Void #-----| 0: (Attributes) # 11| 1: [DefaultAttribute] [My(...)] @@ -508,7 +508,7 @@ NameofScope.cs: # 12| 0: [Parameter] x # 12| -1: [TypeMention] string # 12| 4: [BlockStmt] {...} -# 15| 7: [Method] M2 +# 15| 8: [Method] M2 # 15| -1: [TypeMention] string #-----| 0: (Attributes) # 14| 1: [ReturnAttribute] [return: My(...)] @@ -519,7 +519,7 @@ NameofScope.cs: # 15| 0: [Parameter] y # 15| -1: [TypeMention] string # 15| 4: [ParameterAccess] access to parameter y -# 17| 8: [Method] M3 +# 17| 9: [Method] M3 # 17| -1: [TypeMention] object #-----| 2: (Parameters) # 17| 0: [Parameter] z @@ -530,7 +530,7 @@ NameofScope.cs: # 17| 0: [NameOfExpr] nameof(...) # 17| 0: [ParameterAccess] access to parameter z # 17| 4: [ParameterAccess] access to parameter z -# 19| 9: [Method] M4`1 +# 19| 10: [Method] M4`1 # 19| -1: [TypeMention] object #-----| 1: (Type parameters) # 19| 0: [TypeParameter] S @@ -546,7 +546,7 @@ NameofScope.cs: # 19| 4: [ParameterAccess] access to parameter z NativeInt.cs: # 1| [Class] NativeInt -# 3| 5: [Method] M1 +# 3| 6: [Method] M1 # 3| -1: [TypeMention] Void # 4| 4: [BlockStmt] {...} # 5| 0: [LocalVariableDeclStmt] ... ...; @@ -579,7 +579,7 @@ NativeInt.cs: # 9| 1: [IntLiteral] 0 Operators.cs: # 2| [Class] MyClass -# 4| 5: [Method] M1 +# 4| 6: [Method] M1 # 4| -1: [TypeMention] Void # 5| 4: [BlockStmt] {...} # 6| 0: [LocalVariableDeclStmt] ... ...; @@ -618,7 +618,7 @@ Operators.cs: # 13| 0: [LocalVariableAccess] access to local variable z # 13| 1: [IntLiteral] 5 # 17| [Class] MyOperatorClass -# 19| 5: [UnsignedRightShiftOperator] >>> +# 19| 6: [UnsignedRightShiftOperator] >>> # 19| -1: [TypeMention] MyOperatorClass #-----| 2: (Parameters) # 19| 0: [Parameter] a @@ -630,7 +630,7 @@ Operators.cs: # 19| 0: [NullLiteral] null PatternMatchSpan.cs: # 3| [Class] PatternMatchSpan -# 6| 5: [Method] M1 +# 6| 6: [Method] M1 # 6| -1: [TypeMention] Void #-----| 2: (Parameters) # 6| 0: [Parameter] x1 @@ -642,7 +642,7 @@ PatternMatchSpan.cs: # 8| 0: [ParameterAccess] access to parameter x1 # 8| 1: [ConstantPatternExpr,StringLiteralUtf16] "ABC" # 8| 1: [BlockStmt] {...} -# 11| 6: [Method] M2 +# 11| 7: [Method] M2 # 11| -1: [TypeMention] Void #-----| 2: (Parameters) # 11| 0: [Parameter] x2 @@ -687,7 +687,7 @@ RelaxedShift.cs: # 7| -1: [TypeMention] TOther # 10| [Class] Number #-----| 3: (Base types) -# 12| 5: [LeftShiftOperator] << +# 12| 6: [LeftShiftOperator] << # 12| -1: [TypeMention] Number #-----| 2: (Parameters) # 12| 0: [Parameter] value @@ -695,7 +695,7 @@ RelaxedShift.cs: # 12| 1: [Parameter] shiftAmount # 12| -1: [TypeMention] string # 12| 4: [ParameterAccess] access to parameter value -# 14| 6: [RightShiftOperator] >> +# 14| 7: [RightShiftOperator] >> # 14| -1: [TypeMention] Number #-----| 2: (Parameters) # 14| 0: [Parameter] value @@ -703,7 +703,7 @@ RelaxedShift.cs: # 14| 1: [Parameter] shiftAmount # 14| -1: [TypeMention] string # 14| 4: [ParameterAccess] access to parameter value -# 16| 7: [UnsignedRightShiftOperator] >>> +# 16| 8: [UnsignedRightShiftOperator] >>> # 16| -1: [TypeMention] Number #-----| 2: (Parameters) # 16| 0: [Parameter] value @@ -712,7 +712,7 @@ RelaxedShift.cs: # 16| -1: [TypeMention] string # 16| 4: [ParameterAccess] access to parameter value # 19| [Class] TestRelaxedShift -# 21| 5: [Method] M1 +# 21| 6: [Method] M1 # 21| -1: [TypeMention] Void # 22| 4: [BlockStmt] {...} # 23| 0: [LocalVariableDeclStmt] ... ...; @@ -756,23 +756,23 @@ RelaxedShift.cs: # 30| 1: [StringLiteralUtf16] "3" RequiredMembers.cs: # 4| [Class] ClassRequiredMembers -# 6| 4: [Field] RequiredField +# 6| 5: [Field] RequiredField # 6| -1: [TypeMention] object -# 7| 5: [Property] RequiredProperty +# 7| 6: [Property] RequiredProperty # 7| -1: [TypeMention] string # 7| 3: [Getter] get_RequiredProperty # 7| 4: [Setter] set_RequiredProperty #-----| 2: (Parameters) # 7| 0: [Parameter] value -# 8| 6: [Property] VirtualProperty +# 8| 7: [Property] VirtualProperty # 8| -1: [TypeMention] object # 8| 3: [Getter] get_VirtualProperty # 8| 4: [Setter] set_VirtualProperty #-----| 2: (Parameters) # 8| 0: [Parameter] value -# 10| 7: [InstanceConstructor] ClassRequiredMembers +# 10| 8: [InstanceConstructor] ClassRequiredMembers # 10| 4: [BlockStmt] {...} -# 13| 8: [InstanceConstructor] ClassRequiredMembers +# 13| 9: [InstanceConstructor] ClassRequiredMembers #-----| 0: (Attributes) # 12| 1: [DefaultAttribute] [SetsRequiredMembers(...)] # 12| 0: [TypeMention] SetsRequiredMembersAttribute @@ -793,16 +793,16 @@ RequiredMembers.cs: # 20| [Class] ClassRequiredMembersSub #-----| 3: (Base types) # 20| 0: [TypeMention] ClassRequiredMembers -# 22| 4: [Property] VirtualProperty +# 22| 5: [Property] VirtualProperty # 22| -1: [TypeMention] object # 22| 3: [Getter] get_VirtualProperty # 22| 4: [Setter] set_VirtualProperty #-----| 2: (Parameters) # 22| 0: [Parameter] value -# 24| 5: [InstanceConstructor] ClassRequiredMembersSub +# 24| 6: [InstanceConstructor] ClassRequiredMembersSub # 24| 3: [ConstructorInitializer] call to constructor ClassRequiredMembers # 24| 4: [BlockStmt] {...} -# 27| 6: [InstanceConstructor] ClassRequiredMembersSub +# 27| 7: [InstanceConstructor] ClassRequiredMembersSub #-----| 0: (Attributes) # 26| 1: [DefaultAttribute] [SetsRequiredMembers(...)] # 26| 0: [TypeMention] SetsRequiredMembersAttribute @@ -822,24 +822,24 @@ RequiredMembers.cs: # 29| 0: [PropertyCall] access to property VirtualProperty # 29| 1: [ParameterAccess] access to parameter virtualProperty # 33| [RecordClass] RecordRequiredMembers -# 33| 12: [NEOperator] != +# 33| 13: [NEOperator] != #-----| 2: (Parameters) # 33| 0: [Parameter] left # 33| 1: [Parameter] right -# 33| 13: [EQOperator] == +# 33| 14: [EQOperator] == #-----| 2: (Parameters) # 33| 0: [Parameter] left # 33| 1: [Parameter] right -# 33| 14: [Property] EqualityContract +# 33| 15: [Property] EqualityContract # 33| 3: [Getter] get_EqualityContract -# 35| 15: [Property] X +# 35| 16: [Property] X # 35| -1: [TypeMention] object # 35| 3: [Getter] get_X # 35| 4: [Setter] set_X #-----| 2: (Parameters) # 35| 0: [Parameter] value # 38| [Struct] StructRequiredMembers -# 40| 5: [Property] Y +# 40| 6: [Property] Y # 40| -1: [TypeMention] string # 40| 3: [Getter] get_Y # 40| 4: [Setter] set_Y @@ -849,7 +849,7 @@ Scoped.cs: # 1| [Struct] S1 # 2| [RefStruct] S2 # 7| [Class] ScopedModifierTest -# 9| 5: [Method] M1 +# 9| 6: [Method] M1 # 9| -1: [TypeMention] int #-----| 2: (Parameters) # 9| 0: [Parameter] x1 @@ -860,7 +860,7 @@ Scoped.cs: # 13| 0: [ReturnStmt] return ...; # 13| 0: [RefExpr] ref ... # 13| 0: [ParameterAccess] access to parameter y1 -# 16| 6: [Method] M2 +# 16| 7: [Method] M2 # 16| -1: [TypeMention] int #-----| 2: (Parameters) # 16| 0: [Parameter] x2 @@ -875,7 +875,7 @@ Scoped.cs: # 21| 1: [ReturnStmt] return ...; # 21| 0: [RefExpr] ref ... # 21| 0: [ParameterAccess] access to parameter y2 -# 24| 7: [Method] M3 +# 24| 8: [Method] M3 # 24| -1: [TypeMention] int #-----| 2: (Parameters) # 24| 0: [Parameter] x3 @@ -883,7 +883,7 @@ Scoped.cs: # 25| 4: [BlockStmt] {...} # 27| 0: [ReturnStmt] return ...; # 27| 0: [ParameterAccess] access to parameter x3 -# 30| 8: [Method] M4 +# 30| 9: [Method] M4 # 30| -1: [TypeMention] S1 #-----| 2: (Parameters) # 30| 0: [Parameter] x4 @@ -891,7 +891,7 @@ Scoped.cs: # 31| 4: [BlockStmt] {...} # 33| 0: [ReturnStmt] return ...; # 33| 0: [ParameterAccess] access to parameter x4 -# 36| 9: [Method] M5 +# 36| 10: [Method] M5 # 36| -1: [TypeMention] S2 #-----| 2: (Parameters) # 36| 0: [Parameter] x5 @@ -900,7 +900,7 @@ Scoped.cs: # 40| 0: [ReturnStmt] return ...; # 40| 0: [ObjectCreation] object creation of type S2 # 40| 0: [TypeMention] S2 -# 43| 10: [Method] M6 +# 43| 11: [Method] M6 # 43| -1: [TypeMention] S2 #-----| 2: (Parameters) # 43| 0: [Parameter] x6 @@ -909,7 +909,7 @@ Scoped.cs: # 47| 0: [ReturnStmt] return ...; # 47| 0: [ObjectCreation] object creation of type S2 # 47| 0: [TypeMention] S2 -# 50| 11: [Method] Locals +# 50| 12: [Method] Locals # 50| -1: [TypeMention] S2 # 51| 4: [BlockStmt] {...} # 52| 0: [LocalVariableDeclStmt] ... ...; @@ -928,7 +928,7 @@ Scoped.cs: # 56| 0: [LocalVariableAccess] access to local variable y7 SignAnalysis.cs: # 1| [Class] MySignAnalysis -# 4| 5: [Method] UnsignedRightShiftSign +# 4| 6: [Method] UnsignedRightShiftSign # 4| -1: [TypeMention] Void #-----| 2: (Parameters) # 4| 0: [Parameter] x @@ -1109,27 +1109,27 @@ StaticInterfaceMembers.cs: # 23| 0: [TypeMention] T # 26| [Class] Complex #-----| 3: (Base types) -# 28| 4: [Property] Real +# 28| 5: [Property] Real # 28| -1: [TypeMention] double # 28| 2: [DoubleLiteral] 0 # 28| 3: [Getter] get_Real # 28| 4: [Setter] set_Real #-----| 2: (Parameters) # 28| 0: [Parameter] value -# 29| 5: [Property] Imaginary +# 29| 6: [Property] Imaginary # 29| -1: [TypeMention] double # 29| 2: [DoubleLiteral] 0 # 29| 3: [Getter] get_Imaginary # 29| 4: [Setter] set_Imaginary #-----| 2: (Parameters) # 29| 0: [Parameter] value -# 31| 6: [InstanceConstructor] Complex +# 31| 7: [InstanceConstructor] Complex # 31| 4: [BlockStmt] {...} -# 33| 7: [Method] Zero +# 33| 8: [Method] Zero # 33| -1: [TypeMention] Complex # 33| 4: [ObjectCreation] object creation of type Complex # 33| 0: [TypeMention] Complex -# 35| 8: [IncrementOperator] ++ +# 35| 9: [IncrementOperator] ++ # 35| -1: [TypeMention] Complex #-----| 2: (Parameters) # 35| 0: [Parameter] other @@ -1147,7 +1147,7 @@ StaticInterfaceMembers.cs: # 36| 0: [PropertyCall] access to property Imaginary # 36| 1: [PropertyCall] access to property Imaginary # 36| -1: [ParameterAccess] access to parameter other -# 38| 9: [DecrementOperator] -- +# 38| 10: [DecrementOperator] -- # 38| -1: [TypeMention] Complex #-----| 2: (Parameters) # 38| 0: [Parameter] other @@ -1165,7 +1165,7 @@ StaticInterfaceMembers.cs: # 39| 0: [PropertyCall] access to property Imaginary # 39| 1: [PropertyCall] access to property Imaginary # 39| -1: [ParameterAccess] access to parameter other -# 41| 10: [AddOperator] + +# 41| 11: [AddOperator] + # 41| -1: [TypeMention] Complex #-----| 2: (Parameters) # 41| 0: [Parameter] left @@ -1189,7 +1189,7 @@ StaticInterfaceMembers.cs: # 42| -1: [ParameterAccess] access to parameter left # 42| 1: [PropertyCall] access to property Imaginary # 42| -1: [ParameterAccess] access to parameter right -# 44| 11: [SubOperator] - +# 44| 12: [SubOperator] - # 44| -1: [TypeMention] Complex #-----| 2: (Parameters) # 44| 0: [Parameter] left @@ -1213,7 +1213,7 @@ StaticInterfaceMembers.cs: # 45| -1: [ParameterAccess] access to parameter left # 45| 1: [PropertyCall] access to property Imaginary # 45| -1: [ParameterAccess] access to parameter right -# 47| 12: [ExplicitConversionOperator] explicit conversion +# 47| 13: [ExplicitConversionOperator] explicit conversion # 47| -1: [TypeMention] int #-----| 2: (Parameters) # 47| 0: [Parameter] n @@ -1223,7 +1223,7 @@ StaticInterfaceMembers.cs: # 47| 0: [TypeMention] int # 47| 1: [PropertyCall] access to property Real # 47| -1: [ParameterAccess] access to parameter n -# 49| 13: [ExplicitConversionOperator] explicit conversion +# 49| 14: [ExplicitConversionOperator] explicit conversion # 49| -1: [TypeMention] short #-----| 2: (Parameters) # 49| 0: [Parameter] n @@ -1233,7 +1233,7 @@ StaticInterfaceMembers.cs: # 49| 0: [TypeMention] short # 49| 1: [PropertyCall] access to property Real # 49| -1: [ParameterAccess] access to parameter n -# 51| 14: [Method] Inc +# 51| 15: [Method] Inc # 51| -1: [TypeMention] INumber # 51| 1: [TypeMention] Complex # 51| -1: [TypeMention] Complex @@ -1253,7 +1253,7 @@ StaticInterfaceMembers.cs: # 52| 0: [PropertyCall] access to property Imaginary # 52| 1: [PropertyCall] access to property Imaginary # 52| -1: [ParameterAccess] access to parameter other -# 54| 15: [Method] Dec +# 54| 16: [Method] Dec # 54| -1: [TypeMention] INumber # 54| 1: [TypeMention] Complex # 54| -1: [TypeMention] Complex @@ -1273,7 +1273,7 @@ StaticInterfaceMembers.cs: # 55| 0: [PropertyCall] access to property Imaginary # 55| 1: [PropertyCall] access to property Imaginary # 55| -1: [ParameterAccess] access to parameter other -# 57| 16: [Method] Add +# 57| 17: [Method] Add # 57| -1: [TypeMention] Complex #-----| 2: (Parameters) # 57| 0: [Parameter] left @@ -1297,7 +1297,7 @@ StaticInterfaceMembers.cs: # 58| -1: [ParameterAccess] access to parameter left # 58| 1: [PropertyCall] access to property Imaginary # 58| -1: [ParameterAccess] access to parameter right -# 60| 17: [Method] Subtract +# 60| 18: [Method] Subtract # 60| -1: [TypeMention] Complex #-----| 2: (Parameters) # 60| 0: [Parameter] left @@ -1323,7 +1323,7 @@ StaticInterfaceMembers.cs: # 61| -1: [ParameterAccess] access to parameter right Strings.cs: # 3| [Class] MyTestClass -# 5| 5: [Method] M1 +# 5| 6: [Method] M1 # 5| -1: [TypeMention] string #-----| 2: (Parameters) # 5| 0: [Parameter] x @@ -1342,7 +1342,7 @@ Strings.cs: # 11| 0: [DiscardPatternExpr] _ # 11| 2: [StringLiteralUtf16] "something else" # 12| 2: [StringLiteralUtf16] "." -# 15| 6: [Method] M2 +# 15| 7: [Method] M2 # 15| -1: [TypeMention] Void # 16| 4: [BlockStmt] {...} # 18| 0: [LocalVariableDeclStmt] ... ...; @@ -1377,7 +1377,7 @@ Strings.cs: # 35| 3: [InterpolatedStringInsertExpr] {...} # 35| 0: [LocalVariableAccess] access to local variable message2 # 35| 4: [StringLiteralUtf16] "}" -# 40| 7: [Method] M3 +# 40| 8: [Method] M3 # 40| -1: [TypeMention] Void # 41| 4: [BlockStmt] {...} # 43| 0: [LocalVariableDeclStmt] ... ...; @@ -1407,30 +1407,30 @@ Struct.cs: # 1| [NamespaceDeclaration] namespace ... { ... } # 3| 1: [Class] MyEmptyClass # 5| 2: [RefStruct] RefStruct -# 7| 5: [Field] MyInt +# 7| 6: [Field] MyInt # 7| -1: [TypeMention] int -# 8| 6: [Field] MyByte +# 8| 7: [Field] MyByte # 8| -1: [TypeMention] byte -# 9| 7: [Field] MyObject +# 9| 8: [Field] MyObject # 9| -1: [TypeMention] object -# 10| 8: [Field] MyEmptyClass +# 10| 9: [Field] MyEmptyClass # 10| -1: [TypeMention] MyEmptyClass -# 11| 9: [Field] MyReadonlyByte +# 11| 10: [Field] MyReadonlyByte # 11| -1: [TypeMention] byte -# 12| 10: [Field] MyReadonlyObject +# 12| 11: [Field] MyReadonlyObject # 12| -1: [TypeMention] object -# 13| 11: [Field] MyReadonlyString +# 13| 12: [Field] MyReadonlyString # 13| -1: [TypeMention] string StructDefault.cs: # 1| [Class] MyEmptyClass # 2| [Struct] StructDefaultValue -# 4| 5: [Field] X +# 4| 6: [Field] X # 4| -1: [TypeMention] int -# 5| 6: [Field] Y +# 5| 7: [Field] Y # 5| -1: [TypeMention] int -# 6| 7: [Field] Z +# 6| 8: [Field] Z # 6| -1: [TypeMention] MyEmptyClass -# 8| 8: [InstanceConstructor] StructDefaultValue +# 8| 9: [InstanceConstructor] StructDefaultValue #-----| 2: (Parameters) # 8| 0: [Parameter] x # 8| -1: [TypeMention] int diff --git a/csharp/ql/test/library-tests/csharp6/MemberAccess.expected b/csharp/ql/test/library-tests/csharp6/MemberAccess.expected index 1eda117fadd2..d54af10ffc3e 100644 --- a/csharp/ql/test/library-tests/csharp6/MemberAccess.expected +++ b/csharp/ql/test/library-tests/csharp6/MemberAccess.expected @@ -4,7 +4,10 @@ memberAccess | csharp6.cs:32:38:32:70 | access to indexer | csharp6.cs:32:38:32:66 | object creation of type Dictionary | Conditional | | csharp6.cs:32:38:32:73 | access to indexer | csharp6.cs:32:38:32:70 | access to indexer | Unconditional | methodCall +| csharp6.cs:10:7:10:17 | call to method | csharp6.cs:10:7:10:17 | this access | Unconditional | | csharp6.cs:30:31:30:44 | call to method ToUpper | csharp6.cs:30:31:30:33 | access to local variable foo | Conditional | +| csharp6.cs:53:7:53:23 | call to method | csharp6.cs:53:7:53:23 | this access | Unconditional | +| csharp6.cs:55:11:55:18 | call to method | csharp6.cs:55:11:55:18 | this access | Unconditional | extensionMethodCall | csharp6.cs:29:35:29:44 | call to method Any | csharp6.cs:29:35:29:37 | access to local variable bar | Conditional | | csharp6.cs:30:31:30:66 | call to method Select | csharp6.cs:30:31:30:44 | call to method ToUpper | Unconditional | diff --git a/csharp/ql/test/library-tests/csharp6/PrintAst.expected b/csharp/ql/test/library-tests/csharp6/PrintAst.expected index 424a18bcb023..78747650190e 100644 --- a/csharp/ql/test/library-tests/csharp6/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp6/PrintAst.expected @@ -1,17 +1,17 @@ csharp6.cs: # 10| [Class] TestCSharp6 -# 12| 6: [Property] Value +# 12| 7: [Property] Value # 12| -1: [TypeMention] int # 15| 2: [IntLiteral] 20 # 14| 3: [Getter] get_Value -# 17| 7: [Method] Fn +# 17| 8: [Method] Fn # 17| -1: [TypeMention] Void #-----| 2: (Parameters) # 17| 0: [Parameter] x # 17| -1: [TypeMention] string # 17| 4: [MethodCall] call to method WriteLine # 17| 0: [ParameterAccess] access to parameter x -# 19| 8: [Method] Main +# 19| 9: [Method] Main # 19| -1: [TypeMention] Void # 20| 4: [BlockStmt] {...} # 21| 0: [TryStmt] try {...} ... @@ -112,7 +112,7 @@ csharp6.cs: # 37| 1: [IntLiteral] 30 # 40| 3: [GeneralCatchClause] catch {...} # 41| 1: [BlockStmt] {...} -# 45| 9: [EQOperator] == +# 45| 10: [EQOperator] == # 45| -1: [TypeMention] bool #-----| 2: (Parameters) # 45| 0: [Parameter] t1 @@ -120,7 +120,7 @@ csharp6.cs: # 45| 1: [Parameter] t2 # 45| -1: [TypeMention] TestCSharp6 # 45| 4: [BoolLiteral] true -# 46| 10: [NEOperator] != +# 46| 11: [NEOperator] != # 46| -1: [TypeMention] bool #-----| 2: (Parameters) # 46| 0: [Parameter] t1 @@ -128,11 +128,11 @@ csharp6.cs: # 46| 1: [Parameter] t2 # 46| -1: [TypeMention] TestCSharp6 # 46| 4: [BoolLiteral] false -# 48| 11: [Property] ExprProperty +# 48| 12: [Property] ExprProperty # 48| -1: [TypeMention] int # 48| 3: [Getter] get_ExprProperty # 48| 4: [IntLiteral] 3 -# 50| 12: [Indexer] Item +# 50| 13: [Indexer] Item # 50| -1: [TypeMention] int #-----| 1: (Parameters) # 50| 0: [Parameter] i @@ -142,12 +142,12 @@ csharp6.cs: # 50| 0: [Parameter] i # 50| 4: [ParameterAccess] access to parameter i # 53| [Class] IndexInitializers -# 55| 5: [Class] Compound -# 57| 5: [Field] DictionaryField +# 55| 6: [Class] Compound +# 57| 6: [Field] DictionaryField # 57| -1: [TypeMention] Dictionary # 57| 1: [TypeMention] int # 57| 2: [TypeMention] string -# 58| 6: [Property] DictionaryProperty +# 58| 7: [Property] DictionaryProperty # 58| -1: [TypeMention] Dictionary # 58| 1: [TypeMention] int # 58| 2: [TypeMention] string @@ -155,27 +155,27 @@ csharp6.cs: # 58| 4: [Setter] set_DictionaryProperty #-----| 2: (Parameters) # 58| 0: [Parameter] value -# 59| 7: [Field] ArrayField +# 59| 8: [Field] ArrayField # 59| -1: [TypeMention] String[] # 59| 1: [TypeMention] string -# 60| 8: [Property] ArrayProperty +# 60| 9: [Property] ArrayProperty # 60| -1: [TypeMention] String[] # 60| 1: [TypeMention] string # 60| 3: [Getter] get_ArrayProperty # 60| 4: [Setter] set_ArrayProperty #-----| 2: (Parameters) # 60| 0: [Parameter] value -# 61| 9: [Field] ArrayField2 +# 61| 10: [Field] ArrayField2 # 61| -1: [TypeMention] String[,] # 61| 1: [TypeMention] string -# 62| 10: [Property] ArrayProperty2 +# 62| 11: [Property] ArrayProperty2 # 62| -1: [TypeMention] String[,] # 62| 1: [TypeMention] string # 62| 3: [Getter] get_ArrayProperty2 # 62| 4: [Setter] set_ArrayProperty2 #-----| 2: (Parameters) # 62| 0: [Parameter] value -# 65| 6: [Method] Test +# 65| 7: [Method] Test # 65| -1: [TypeMention] Void # 66| 4: [BlockStmt] {...} # 68| 0: [LocalVariableDeclStmt] ... ...; diff --git a/csharp/ql/test/library-tests/csharp7.1/PrintAst.expected b/csharp/ql/test/library-tests/csharp7.1/PrintAst.expected index 7f4e14672181..b33c09db0ecb 100644 --- a/csharp/ql/test/library-tests/csharp7.1/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp7.1/PrintAst.expected @@ -1,6 +1,6 @@ csharp71.cs: # 1| [Class] DefaultLiterals -# 3| 5: [Method] f +# 3| 6: [Method] f # 3| -1: [TypeMention] Void # 4| 4: [BlockStmt] {...} # 5| 0: [LocalVariableDeclStmt] ... ...; @@ -50,7 +50,7 @@ csharp71.cs: # 15| 1: [CastExpr] (...) ... # 15| 1: [DefaultValueExpr] default # 19| [Class] IsConstants -# 21| 5: [Method] f +# 21| 6: [Method] f # 21| -1: [TypeMention] Void # 22| 4: [BlockStmt] {...} # 23| 0: [LocalVariableDeclStmt] ... ...; diff --git a/csharp/ql/test/library-tests/csharp7.2/PrintAst.expected b/csharp/ql/test/library-tests/csharp7.2/PrintAst.expected index 834b03b44715..bbfb098c3af4 100644 --- a/csharp/ql/test/library-tests/csharp7.2/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp7.2/PrintAst.expected @@ -1,13 +1,13 @@ csharp72.cs: # 3| [Class] InModifiers -# 5| 5: [Struct] S -# 9| 6: [Method] F +# 5| 6: [Struct] S +# 9| 7: [Method] F # 9| -1: [TypeMention] Void #-----| 2: (Parameters) # 9| 0: [Parameter] s # 9| -1: [TypeMention] S # 10| 4: [BlockStmt] {...} -# 13| 7: [Method] CallF +# 13| 8: [Method] CallF # 13| -1: [TypeMention] Void # 14| 4: [BlockStmt] {...} # 15| 0: [LocalVariableDeclStmt] ... ...; @@ -20,26 +20,26 @@ csharp72.cs: # 16| 0: [MethodCall] call to method F # 16| 0: [LocalVariableAccess] access to local variable s # 20| [Class] RefReadonlyReturns -# 22| 5: [Field] s +# 22| 6: [Field] s # 22| -1: [TypeMention] int -# 24| 6: [Method] F +# 24| 7: [Method] F # 24| -1: [TypeMention] int # 25| 4: [BlockStmt] {...} # 26| 0: [ReturnStmt] return ...; # 26| 0: [RefExpr] ref ... # 26| 0: [FieldAccess] access to field s -# 29| 7: [DelegateType] Del +# 29| 8: [DelegateType] Del # 32| [Struct] ReadonlyStruct # 36| [RefStruct] RefStruct # 40| [RefStruct] ReadonlyRefStruct # 44| [Class] NumericLiterals -# 46| 5: [Field] binaryValue +# 46| 6: [Field] binaryValue # 46| -1: [TypeMention] int # 46| 1: [IntLiteral] 85 # 49| [Class] PrivateProtected -# 51| 5: [Field] X +# 51| 6: [Field] X # 51| -1: [TypeMention] int # 51| 1: [IntLiteral] 1 -# 53| 6: [Method] F +# 53| 7: [Method] F # 53| -1: [TypeMention] Void # 53| 4: [BlockStmt] {...} diff --git a/csharp/ql/test/library-tests/csharp7.3/PrintAst.expected b/csharp/ql/test/library-tests/csharp7.3/PrintAst.expected index 70bfee85c04b..29ad30dc2231 100644 --- a/csharp/ql/test/library-tests/csharp7.3/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp7.3/PrintAst.expected @@ -1,6 +1,6 @@ csharp73.cs: # 3| [Class] StackAllocs -# 5| 5: [Method] Fn +# 5| 6: [Method] Fn # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} # 7| 0: [LocalVariableDeclStmt] ... ...; @@ -58,7 +58,7 @@ csharp73.cs: # 12| 1: [IntLiteral] 2 # 12| 2: [IntLiteral] 3 # 16| [Class] PinnedReference -# 18| 5: [Method] F +# 18| 6: [Method] F # 18| -1: [TypeMention] Void # 19| 4: [BlockStmt] {...} # 20| 0: [LocalVariableDeclStmt] ... ...; @@ -91,7 +91,7 @@ csharp73.cs: #-----| 1: (Type parameters) # 38| 0: [TypeParameter] T # 42| [Class] ExpressionVariables -# 44| 4: [InstanceConstructor] ExpressionVariables +# 44| 5: [InstanceConstructor] ExpressionVariables #-----| 2: (Parameters) # 44| 0: [Parameter] x # 44| -1: [TypeMention] int @@ -100,7 +100,7 @@ csharp73.cs: # 46| 0: [AssignExpr] ... = ... # 46| 0: [ParameterAccess] access to parameter x # 46| 1: [IntLiteral] 5 -# 49| 5: [InstanceConstructor] ExpressionVariables +# 49| 6: [InstanceConstructor] ExpressionVariables # 49| 3: [ConstructorInitializer] call to constructor ExpressionVariables # 49| 0: [LocalVariableAccess,LocalVariableDeclExpr] Int32 x # 50| 4: [BlockStmt] {...} diff --git a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected index 0a5266ed359d..a37109c84811 100644 --- a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected +++ b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected @@ -1,3 +1,4 @@ +| CSharp7.cs:5:7:5:14 | this | CSharp7.cs:5:7:5:14 | this access | | CSharp7.cs:5:7:5:14 | this | CSharp7.cs:7:9:7:9 | this access | | CSharp7.cs:7:9:7:9 | [post] this access | CSharp7.cs:8:9:8:9 | this access | | CSharp7.cs:7:9:7:9 | this access | CSharp7.cs:8:9:8:9 | this access | @@ -6,8 +7,7 @@ | CSharp7.cs:8:9:8:9 | this access | CSharp7.cs:9:9:9:9 | this access | | CSharp7.cs:8:13:8:19 | 123456 | CSharp7.cs:8:9:8:9 | access to field y | | CSharp7.cs:9:13:9:23 | 128 | CSharp7.cs:9:9:9:9 | access to field z | -| CSharp7.cs:14:9:14:13 | [post] this access | CSharp7.cs:23:39:23:43 | this access | -| CSharp7.cs:14:9:14:13 | this access | CSharp7.cs:23:39:23:43 | this access | +| CSharp7.cs:12:7:12:29 | this | CSharp7.cs:14:9:14:13 | this access | | CSharp7.cs:14:17:14:17 | 0 | CSharp7.cs:14:9:14:13 | access to field field | | CSharp7.cs:15:9:15:11 | SSA entry def(this.field) | CSharp7.cs:15:18:15:22 | access to field field | | CSharp7.cs:15:9:15:11 | this | CSharp7.cs:15:18:15:22 | this access | @@ -16,13 +16,17 @@ | CSharp7.cs:20:9:20:11 | this | CSharp7.cs:20:16:20:20 | this access | | CSharp7.cs:20:9:20:11 | value | CSharp7.cs:20:9:20:11 | SSA param(value) | | CSharp7.cs:20:24:20:28 | access to parameter value | CSharp7.cs:20:16:20:20 | access to field field | -| CSharp7.cs:23:5:23:27 | this | CSharp7.cs:14:9:14:13 | this access | +| CSharp7.cs:23:5:23:27 | [post] this access | CSharp7.cs:23:39:23:43 | this access | +| CSharp7.cs:23:5:23:27 | this | CSharp7.cs:23:5:23:27 | this access | +| CSharp7.cs:23:5:23:27 | this access | CSharp7.cs:23:39:23:43 | this access | | CSharp7.cs:24:6:24:28 | this | CSharp7.cs:24:35:24:39 | this access | +| CSharp7.cs:27:7:27:15 | this | CSharp7.cs:27:7:27:15 | this access | | CSharp7.cs:29:19:29:19 | SSA param(i) | CSharp7.cs:31:16:31:16 | access to parameter i | | CSharp7.cs:29:19:29:19 | i | CSharp7.cs:29:19:29:19 | SSA param(i) | | CSharp7.cs:31:16:31:16 | access to parameter i | CSharp7.cs:31:16:31:20 | ... > ... | | CSharp7.cs:31:16:31:16 | access to parameter i | CSharp7.cs:31:24:31:24 | access to parameter i | | CSharp7.cs:31:24:31:24 | access to parameter i | CSharp7.cs:31:16:31:59 | ... ? ... : ... | +| CSharp7.cs:35:7:35:18 | this | CSharp7.cs:35:7:35:18 | this access | | CSharp7.cs:39:9:39:9 | access to parameter x | CSharp7.cs:39:9:39:21 | SSA def(x) | | CSharp7.cs:39:13:39:21 | "tainted" | CSharp7.cs:39:9:39:9 | access to parameter x | | CSharp7.cs:42:19:42:19 | SSA param(x) | CSharp7.cs:44:13:44:13 | access to parameter x | @@ -48,6 +52,7 @@ | CSharp7.cs:55:30:55:31 | SSA def(t4) | CSharp7.cs:56:18:56:19 | access to local variable t4 | | CSharp7.cs:55:30:55:31 | String t4 | CSharp7.cs:55:30:55:31 | SSA def(t4) | | CSharp7.cs:56:18:56:19 | access to local variable t4 | CSharp7.cs:56:13:56:14 | access to local variable t5 | +| CSharp7.cs:60:7:60:12 | this | CSharp7.cs:60:7:60:12 | this access | | CSharp7.cs:67:10:67:20 | this | CSharp7.cs:69:26:69:28 | this access | | CSharp7.cs:69:26:69:28 | [post] this access | CSharp7.cs:70:17:70:19 | this access | | CSharp7.cs:69:26:69:28 | call to method F | CSharp7.cs:69:9:69:22 | (..., ...) | @@ -136,6 +141,7 @@ | CSharp7.cs:121:22:121:36 | ... = ... | CSharp7.cs:121:16:121:18 | access to local variable m13 | | CSharp7.cs:121:28:121:36 | "DefUse3" | CSharp7.cs:121:22:121:24 | access to local variable m12 | | CSharp7.cs:121:28:121:36 | "DefUse3" | CSharp7.cs:121:22:121:36 | ... = ... | +| CSharp7.cs:125:7:125:20 | this | CSharp7.cs:125:7:125:20 | this access | | CSharp7.cs:127:9:127:12 | this | CSharp7.cs:133:24:133:25 | this access | | CSharp7.cs:129:20:129:20 | SSA param(x) | CSharp7.cs:129:32:129:32 | access to parameter x | | CSharp7.cs:129:20:129:20 | x | CSharp7.cs:129:20:129:20 | SSA param(x) | @@ -191,6 +197,7 @@ | CSharp7.cs:181:23:181:25 | [post] access to local variable src | CSharp7.cs:182:23:182:25 | access to local variable src | | CSharp7.cs:181:23:181:25 | access to local variable src | CSharp7.cs:182:23:182:25 | access to local variable src | | CSharp7.cs:182:21:182:26 | call to local function h | CSharp7.cs:182:13:182:17 | access to local variable sink3 | +| CSharp7.cs:186:7:186:10 | this | CSharp7.cs:186:7:186:10 | this access | | CSharp7.cs:188:10:188:11 | this | CSharp7.cs:197:14:197:23 | this access | | CSharp7.cs:190:13:190:14 | access to local variable v1 | CSharp7.cs:190:13:190:18 | SSA def(v1) | | CSharp7.cs:190:13:190:18 | SSA def(v1) | CSharp7.cs:191:26:191:27 | access to local variable v1 | @@ -224,6 +231,7 @@ | CSharp7.cs:202:24:202:24 | p | CSharp7.cs:202:24:202:24 | SSA param(p) | | CSharp7.cs:204:28:204:28 | SSA param(q) | CSharp7.cs:204:44:204:44 | access to parameter q | | CSharp7.cs:204:28:204:28 | q | CSharp7.cs:204:28:204:28 | SSA param(q) | +| CSharp7.cs:211:7:211:14 | this | CSharp7.cs:211:7:211:14 | this access | | CSharp7.cs:215:9:215:9 | access to parameter x | CSharp7.cs:215:9:215:17 | SSA def(x) | | CSharp7.cs:215:13:215:17 | false | CSharp7.cs:215:9:215:9 | access to parameter x | | CSharp7.cs:219:10:219:13 | this | CSharp7.cs:221:13:221:20 | this access | @@ -237,6 +245,7 @@ | CSharp7.cs:223:22:223:29 | call to method f | CSharp7.cs:223:9:223:18 | (..., ...) | | CSharp7.cs:223:22:223:29 | this access | CSharp7.cs:224:22:224:33 | this access | | CSharp7.cs:224:22:224:33 | call to method f | CSharp7.cs:224:9:224:18 | (..., ...) | +| CSharp7.cs:228:7:228:14 | this | CSharp7.cs:228:7:228:14 | this access | | CSharp7.cs:232:16:232:16 | access to local variable o | CSharp7.cs:232:16:232:23 | SSA def(o) | | CSharp7.cs:232:16:232:23 | SSA def(o) | CSharp7.cs:233:13:233:13 | access to local variable o | | CSharp7.cs:232:20:232:23 | null | CSharp7.cs:232:16:232:16 | access to local variable o | @@ -303,6 +312,7 @@ | CSharp7.cs:264:37:264:43 | "string " | CSharp7.cs:264:35:264:48 | $"..." | | CSharp7.cs:264:44:264:47 | {...} | CSharp7.cs:264:35:264:48 | $"..." | | CSharp7.cs:264:45:264:46 | access to local variable s2 | CSharp7.cs:264:44:264:47 | {...} | +| CSharp7.cs:278:7:278:23 | this | CSharp7.cs:278:7:278:23 | this access | | CSharp7.cs:282:13:282:16 | access to local variable dict | CSharp7.cs:282:13:282:48 | SSA def(dict) | | CSharp7.cs:282:13:282:48 | SSA def(dict) | CSharp7.cs:283:20:283:23 | access to local variable dict | | CSharp7.cs:282:20:282:48 | object creation of type Dictionary | CSharp7.cs:282:13:282:16 | access to local variable dict | @@ -316,6 +326,7 @@ | CSharp7.cs:283:51:283:54 | access to parameter item | CSharp7.cs:283:51:283:60 | access to property Value | | CSharp7.cs:285:39:285:42 | access to local variable list | CSharp7.cs:287:36:287:39 | access to local variable list | | CSharp7.cs:287:36:287:39 | access to local variable list | CSharp7.cs:289:32:289:35 | access to local variable list | +| CSharp7.cs:293:7:293:14 | this | CSharp7.cs:293:7:293:14 | this access | | CSharp7.cs:297:18:297:18 | access to local variable x | CSharp7.cs:297:18:297:22 | SSA def(x) | | CSharp7.cs:297:18:297:22 | SSA def(x) | CSharp7.cs:297:25:297:25 | access to local variable x | | CSharp7.cs:297:22:297:22 | 0 | CSharp7.cs:297:18:297:18 | access to local variable x | diff --git a/csharp/ql/test/library-tests/csharp7/PrintAst.expected b/csharp/ql/test/library-tests/csharp7/PrintAst.expected index bf0b07abbeb8..47ab207bb556 100644 --- a/csharp/ql/test/library-tests/csharp7/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp7/PrintAst.expected @@ -1,26 +1,26 @@ CSharp7.cs: # 5| [Class] Literals -# 7| 5: [Field] x +# 7| 6: [Field] x # 7| -1: [TypeMention] int # 7| 1: [IntLiteral] 11 -# 8| 6: [Field] y +# 8| 7: [Field] y # 8| -1: [TypeMention] int # 8| 1: [IntLiteral] 123456 -# 9| 7: [Field] z +# 9| 8: [Field] z # 9| -1: [TypeMention] int # 9| 1: [IntLiteral] 128 # 12| [Class] ExpressionBodiedMembers -# 14| 4: [Field] field +# 14| 5: [Field] field # 14| -1: [TypeMention] int # 14| 1: [IntLiteral] 0 -# 15| 5: [Method] Foo +# 15| 6: [Method] Foo # 15| -1: [TypeMention] int # 15| 4: [FieldAccess] access to field field -# 16| 6: [Property] P +# 16| 7: [Property] P # 16| -1: [TypeMention] int # 16| 3: [Getter] get_P # 16| 4: [IntLiteral] 5 -# 17| 7: [Property] Q +# 17| 8: [Property] Q # 17| -1: [TypeMention] int # 19| 3: [Getter] get_Q # 19| 4: [MethodCall] call to method Foo @@ -30,19 +30,19 @@ CSharp7.cs: # 20| 4: [AssignExpr] ... = ... # 20| 0: [FieldAccess] access to field field # 20| 1: [ParameterAccess] access to parameter value -# 22| 8: [InstanceConstructor] ExpressionBodiedMembers +# 22| 9: [InstanceConstructor] ExpressionBodiedMembers # 22| 3: [ConstructorInitializer] call to constructor ExpressionBodiedMembers # 22| 0: [IntLiteral] 1 # 22| 4: [BlockStmt] {...} -# 23| 9: [InstanceConstructor] ExpressionBodiedMembers +# 23| 10: [InstanceConstructor] ExpressionBodiedMembers #-----| 2: (Parameters) # 23| 0: [Parameter] x # 23| -1: [TypeMention] int # 23| 4: [MethodCall] call to method Foo -# 24| 10: [Destructor] ~ExpressionBodiedMembers +# 24| 11: [Destructor] ~ExpressionBodiedMembers # 24| 4: [MethodCall] call to method Foo # 27| [Class] ThrowExpr -# 29| 5: [Method] Throw +# 29| 6: [Method] Throw # 29| -1: [TypeMention] int #-----| 2: (Parameters) # 29| 0: [Parameter] i @@ -59,7 +59,7 @@ CSharp7.cs: # 31| -1: [TypeMention] ArgumentException # 31| 0: [StringLiteralUtf16] "i" # 35| [Class] OutVariables -# 37| 5: [Method] F +# 37| 6: [Method] F # 37| -1: [TypeMention] Void #-----| 2: (Parameters) # 37| 0: [Parameter] x @@ -69,7 +69,7 @@ CSharp7.cs: # 39| 0: [AssignExpr] ... = ... # 39| 0: [ParameterAccess] access to parameter x # 39| 1: [StringLiteralUtf16] "tainted" -# 42| 6: [Method] G +# 42| 7: [Method] G # 42| -1: [TypeMention] Void #-----| 2: (Parameters) # 42| 0: [Parameter] x @@ -81,7 +81,7 @@ CSharp7.cs: # 44| 0: [AssignExpr] ... = ... # 44| 0: [ParameterAccess] access to parameter y # 44| 1: [ParameterAccess] access to parameter x -# 47| 7: [Method] G +# 47| 8: [Method] G # 47| -1: [TypeMention] Void # 48| 4: [BlockStmt] {...} # 49| 0: [ExprStmt] ...; @@ -116,7 +116,7 @@ CSharp7.cs: # 56| 0: [LocalVariableAccess] access to local variable t5 # 56| 1: [LocalVariableAccess] access to local variable t4 # 60| [Class] Tuples -# 62| 5: [Method] F +# 62| 6: [Method] F # 62| -1: [TypeMention] (int, int) # 62| 1: [TypeMention] int # 62| 2: [TypeMention] int @@ -125,7 +125,7 @@ CSharp7.cs: # 64| 0: [TupleExpr] (..., ...) # 64| 0: [IntLiteral] 1 # 64| 1: [IntLiteral] 2 -# 67| 6: [Method] Expressions +# 67| 7: [Method] Expressions # 67| -1: [TypeMention] Void # 68| 4: [BlockStmt] {...} # 69| 0: [ExprStmt] ...; @@ -203,7 +203,7 @@ CSharp7.cs: # 77| 1: [TupleExpr] (..., ...) # 77| 0: [StringLiteralUtf16] "" # 77| 1: [LocalVariableAccess] access to local variable x -# 80| 7: [Method] I +# 80| 8: [Method] I # 80| -1: [TypeMention] string #-----| 2: (Parameters) # 80| 0: [Parameter] x @@ -214,7 +214,7 @@ CSharp7.cs: # 82| -1: [TupleExpr] (..., ...) # 82| 0: [ParameterAccess] access to parameter x # 82| 1: [IntLiteral] 2 -# 85| 8: [Method] TaintFlow +# 85| 9: [Method] TaintFlow # 85| -1: [TypeMention] Void # 86| 4: [BlockStmt] {...} # 87| 0: [LocalVariableDeclStmt] ... ...; @@ -242,7 +242,7 @@ CSharp7.cs: # 90| 1: [MethodCall] call to method I # 90| 0: [FieldAccess] access to field Item1 # 90| -1: [LocalVariableAccess] access to local variable t1 -# 93| 9: [Method] TupleExprNode +# 93| 10: [Method] TupleExprNode # 93| -1: [TypeMention] Void # 94| 4: [BlockStmt] {...} # 95| 0: [LocalVariableDeclStmt] ... ...; @@ -261,7 +261,7 @@ CSharp7.cs: # 96| 1: [TupleExpr] (..., ...) # 96| 0: [StringLiteralUtf16] "TupleExprNode2" # 96| 1: [IntLiteral] 2 -# 99| 10: [Method] TupleMemberAccess +# 99| 11: [Method] TupleMemberAccess # 99| -1: [TypeMention] Void # 100| 4: [BlockStmt] {...} # 101| 0: [LocalVariableDeclStmt] ... ...; @@ -282,7 +282,7 @@ CSharp7.cs: # 102| 1: [TupleExpr] (..., ...) # 102| 0: [StringLiteralUtf16] "TupleMemberAccess2" # 102| 1: [IntLiteral] 1 -# 105| 11: [Method] DefUse +# 105| 12: [Method] DefUse # 105| -1: [TypeMention] Void # 106| 4: [BlockStmt] {...} # 107| 0: [ExprStmt] ...; @@ -361,7 +361,7 @@ CSharp7.cs: # 121| 0: [LocalVariableAccess] access to local variable m12 # 121| 1: [StringLiteralUtf16] "DefUse3" # 125| [Class] LocalFunctions -# 127| 5: [Method] Main +# 127| 6: [Method] Main # 127| -1: [TypeMention] int # 128| 4: [BlockStmt] {...} # 129| 0: [LocalFunctionStmt] f1(...) @@ -462,7 +462,7 @@ CSharp7.cs: # 154| 0: [LocalFunctionCall] call to local function f1 # 154| -1: [LocalFunctionAccess] access to local function f1 # 154| 0: [IntLiteral] 2 -# 157| 6: [Method] Generics +# 157| 7: [Method] Generics # 157| -1: [TypeMention] Void # 158| 4: [BlockStmt] {...} # 159| 0: [LocalFunctionStmt] f(...) @@ -517,7 +517,7 @@ CSharp7.cs: # 170| -1: [LocalFunctionAccess] access to local function h # 170| 0: [StringLiteralUtf16] "" # 170| 1: [BoolLiteral] true -# 173| 7: [Method] GlobalFlow +# 173| 8: [Method] GlobalFlow # 173| -1: [TypeMention] Void # 174| 4: [BlockStmt] {...} # 175| 0: [LocalVariableDeclStmt] ... ...; @@ -571,7 +571,7 @@ CSharp7.cs: # 182| -1: [LocalFunctionAccess] access to local function h # 182| 0: [LocalVariableAccess] access to local variable src # 186| [Class] Refs -# 188| 5: [Method] F1 +# 188| 6: [Method] F1 # 188| -1: [TypeMention] Void # 189| 4: [BlockStmt] {...} # 190| 0: [LocalVariableDeclStmt] ... ...; @@ -634,7 +634,7 @@ CSharp7.cs: # 199| 0: [MethodCall] call to method F2 # 199| 0: [LocalVariableAccess] access to local variable r1 # 199| 1: [IntLiteral] 3 -# 202| 6: [Method] F2 +# 202| 7: [Method] F2 # 202| -1: [TypeMention] int #-----| 2: (Parameters) # 202| 0: [Parameter] p @@ -652,12 +652,12 @@ CSharp7.cs: # 205| 1: [ReturnStmt] return ...; # 205| 0: [RefExpr] ref ... # 205| 0: [ParameterAccess] access to parameter p -# 208| 7: [DelegateType] RefFn +# 208| 8: [DelegateType] RefFn #-----| 2: (Parameters) # 208| 0: [Parameter] p # 208| -1: [TypeMention] int # 211| [Class] Discards -# 213| 5: [Method] f +# 213| 6: [Method] f # 213| -1: [TypeMention] (int, double) # 213| 1: [TypeMention] int # 213| 2: [TypeMention] double @@ -673,7 +673,7 @@ CSharp7.cs: # 216| 0: [TupleExpr] (..., ...) # 216| 0: [IntLiteral] 0 # 216| 1: [DoubleLiteral] 0 -# 219| 6: [Method] Test +# 219| 7: [Method] Test # 219| -1: [TypeMention] Void # 220| 4: [BlockStmt] {...} # 221| 0: [ExprStmt] ...; @@ -703,7 +703,7 @@ CSharp7.cs: # 224| 1: [MethodCall] call to method f # 224| 0: [LocalVariableAccess,LocalVariableDeclExpr] Boolean z # 228| [Class] Patterns -# 230| 5: [Method] Test +# 230| 6: [Method] Test # 230| -1: [TypeMention] Void # 231| 4: [BlockStmt] {...} # 232| 0: [LocalVariableDeclStmt] ... ...; @@ -839,7 +839,7 @@ CSharp7.cs: # 272| 0: [StringLiteralUtf16] "Something else" # 273| 23: [BreakStmt] break; # 278| [Class] ForeachStatements -# 280| 5: [Method] Test +# 280| 6: [Method] Test # 280| -1: [TypeMention] Void # 281| 4: [BlockStmt] {...} # 282| 0: [LocalVariableDeclStmt] ... ...; @@ -883,7 +883,7 @@ CSharp7.cs: # 289| 1: [LocalVariableAccess] access to local variable list # 289| 2: [BlockStmt] {...} # 293| [Class] ForLoops -# 295| 5: [Method] Test +# 295| 6: [Method] Test # 295| -1: [TypeMention] Void # 296| 4: [BlockStmt] {...} # 297| 0: [ForStmt] for (...;...;...) ... diff --git a/csharp/ql/test/library-tests/csharp8/NullableRefTypes.expected b/csharp/ql/test/library-tests/csharp8/NullableRefTypes.expected index 6ad47e73d01a..fb2ca2f17591 100644 --- a/csharp/ql/test/library-tests/csharp8/NullableRefTypes.expected +++ b/csharp/ql/test/library-tests/csharp8/NullableRefTypes.expected @@ -153,6 +153,7 @@ arrayElements | NullableRefTypes.cs:150:27:150:27 | k | NullableRefTypes.cs:6:7:6:13 | MyClass[,,,][][,][,,] | NullableRefTypes.cs:6:7:6:13 | MyClass[][,][,,] | | NullableRefTypes.cs:151:29:151:29 | l | NullableRefTypes.cs:6:7:6:13 | MyClass?[,,,][][,]?[,,] | NullableRefTypes.cs:6:7:6:13 | MyClass?[,,,][][,]? | returnTypes +| NullableRefTypes.cs:6:7:6:13 | | Void | | NullableRefTypes.cs:6:7:6:13 | MyClass | Void! | | NullableRefTypes.cs:13:19:13:22 | get_C | MyClass? | | NullableRefTypes.cs:14:18:14:21 | get_D | MyClass! | @@ -179,14 +180,18 @@ returnTypes | NullableRefTypes.cs:51:12:51:15 | Q | object! | | NullableRefTypes.cs:51:12:51:15 | Q`1 | object! | | NullableRefTypes.cs:54:11:54:17 | Generic | Void! | +| NullableRefTypes.cs:54:11:54:33 | | Void | | NullableRefTypes.cs:58:11:58:18 | Generic2 | Void! | +| NullableRefTypes.cs:58:11:58:26 | | Void | | NullableRefTypes.cs:67:10:67:21 | GenericFn | Void | | NullableRefTypes.cs:67:10:67:21 | GenericFn | Void! | | NullableRefTypes.cs:67:10:67:21 | GenericFn`1 | Void! | | NullableRefTypes.cs:71:14:71:18 | CallF | MyStruct! | +| NullableRefTypes.cs:80:7:80:22 | | Void | | NullableRefTypes.cs:80:7:80:22 | NullableRefTypes | Void! | | NullableRefTypes.cs:82:10:82:40 | TestSuppressNullableWarningExpr | Void! | | NullableRefTypes.cs:91:10:91:34 | FunctionInNullableContext | Void! | +| NullableRefTypes.cs:100:7:100:14 | | Void | | NullableRefTypes.cs:100:7:100:14 | RefTypes | Void! | | NullableRefTypes.cs:103:18:103:28 | ReturnsRef1 | ref MyClass? | | NullableRefTypes.cs:104:17:104:27 | ReturnsRef2 | ref MyClass! | @@ -196,12 +201,17 @@ returnTypes | NullableRefTypes.cs:108:26:108:36 | ReturnsRef6 | readonly MyClass! | | NullableRefTypes.cs:110:10:110:20 | Parameters1 | Void! | | NullableRefTypes.cs:113:32:113:44 | get_RefProperty | MyClass! | +| NullableRefTypes.cs:116:7:116:23 | | Void | | NullableRefTypes.cs:116:7:116:23 | ToStringWithTypes | Void! | +| NullableRefTypes.cs:136:7:136:24 | | Void | | NullableRefTypes.cs:136:7:136:24 | ToStringWithTypes2 | Void! | +| NullableRefTypes.cs:154:7:154:25 | | Void | | NullableRefTypes.cs:154:7:154:25 | DisabledNullability | Void! | | NullableRefTypes.cs:157:18:157:30 | get_P | MyClass | | NullableRefTypes.cs:158:13:158:14 | Fn | MyClass | +| NullableRefTypes.cs:165:8:165:15 | | Void | | NullableRefTypes.cs:165:8:165:15 | MyStruct | Void! | +| NullableRefTypes.cs:171:16:171:37 | | Void | | NullableRefTypes.cs:171:16:171:37 | TestNullableFlowStates | Void! | | NullableRefTypes.cs:173:29:173:37 | MaybeNull | string? | | NullableRefTypes.cs:175:26:175:30 | Check | Void! | @@ -245,6 +255,8 @@ annotatedTypeConstraints typeNotAnnotated expressionTypes | NullableRefTypes.cs:6:7:6:13 | call to constructor Object | object | +| NullableRefTypes.cs:6:7:6:13 | call to method | Void | +| NullableRefTypes.cs:6:7:6:13 | this access | MyClass | | NullableRefTypes.cs:13:19:13:22 | null | null | | NullableRefTypes.cs:14:18:14:21 | this access | MyClass! | | NullableRefTypes.cs:17:29:17:32 | null | null | @@ -272,7 +284,11 @@ expressionTypes | NullableRefTypes.cs:40:30:40:30 | access to local variable b | MyClass? | | NullableRefTypes.cs:51:44:51:47 | null | null | | NullableRefTypes.cs:54:11:54:17 | call to constructor Object | object | +| NullableRefTypes.cs:54:11:54:17 | call to method | Void | +| NullableRefTypes.cs:54:11:54:17 | this access | Generic | | NullableRefTypes.cs:58:11:58:18 | call to constructor Object | object | +| NullableRefTypes.cs:58:11:58:18 | call to method | Void | +| NullableRefTypes.cs:58:11:58:18 | this access | Generic2 | | NullableRefTypes.cs:73:18:73:18 | access to local variable x | MyClass! | | NullableRefTypes.cs:73:18:73:25 | MyClass x = ... | MyClass! | | NullableRefTypes.cs:73:22:73:25 | null | null | @@ -285,6 +301,8 @@ expressionTypes | NullableRefTypes.cs:76:16:76:32 | default(...) | MyStruct! | | NullableRefTypes.cs:76:24:76:31 | access to type MyStruct | MyStruct | | NullableRefTypes.cs:80:7:80:22 | call to constructor Object | object | +| NullableRefTypes.cs:80:7:80:22 | call to method | Void | +| NullableRefTypes.cs:80:7:80:22 | this access | NullableRefTypes | | NullableRefTypes.cs:84:17:84:17 | access to local variable x | string! | | NullableRefTypes.cs:84:17:84:28 | String x = ... | string! | | NullableRefTypes.cs:84:21:84:28 | "source" | string! | @@ -318,6 +336,8 @@ expressionTypes | NullableRefTypes.cs:96:9:96:28 | call to method WriteLine | Void! | | NullableRefTypes.cs:96:27:96:27 | access to local variable x | string? | | NullableRefTypes.cs:100:7:100:14 | call to constructor Object | object | +| NullableRefTypes.cs:100:7:100:14 | call to method | Void | +| NullableRefTypes.cs:100:7:100:14 | this access | RefTypes | | NullableRefTypes.cs:103:48:103:52 | ref ... | MyClass | | NullableRefTypes.cs:103:52:103:52 | access to parameter r | MyClass! | | NullableRefTypes.cs:104:48:104:52 | ref ... | MyClass | @@ -337,15 +357,25 @@ expressionTypes | NullableRefTypes.cs:113:36:113:43 | this access | RefTypes | | NullableRefTypes.cs:113:36:113:44 | ...! | MyClass? | | NullableRefTypes.cs:116:7:116:23 | call to constructor Object | object | +| NullableRefTypes.cs:116:7:116:23 | call to method | Void | +| NullableRefTypes.cs:116:7:116:23 | this access | ToStringWithTypes | | NullableRefTypes.cs:136:7:136:24 | call to constructor Object | object | +| NullableRefTypes.cs:136:7:136:24 | call to method | Void | +| NullableRefTypes.cs:136:7:136:24 | this access | ToStringWithTypes2 | | NullableRefTypes.cs:154:7:154:25 | call to constructor Object | object | +| NullableRefTypes.cs:154:7:154:25 | call to method | Void | +| NullableRefTypes.cs:154:7:154:25 | this access | DisabledNullability | | NullableRefTypes.cs:157:18:157:30 | object creation of type MyClass | MyClass | | NullableRefTypes.cs:160:17:160:17 | access to local variable a | MyClass | | NullableRefTypes.cs:160:17:160:21 | MyClass a = ... | MyClass | | NullableRefTypes.cs:160:21:160:21 | access to parameter p | MyClass | | NullableRefTypes.cs:161:16:161:16 | access to local variable a | MyClass | | NullableRefTypes.cs:165:8:165:15 | call to constructor ValueType | ValueType | +| NullableRefTypes.cs:165:8:165:15 | call to method | Void | +| NullableRefTypes.cs:165:8:165:15 | this access | MyStruct | | NullableRefTypes.cs:171:16:171:37 | call to constructor Object | object | +| NullableRefTypes.cs:171:16:171:37 | call to method | Void | +| NullableRefTypes.cs:171:16:171:37 | this access | TestNullableFlowStates | | NullableRefTypes.cs:181:17:181:17 | access to local variable x | string! | | NullableRefTypes.cs:181:17:181:31 | String x = ... | string! | | NullableRefTypes.cs:181:21:181:31 | call to method MaybeNull | string? | diff --git a/csharp/ql/test/library-tests/csharp8/PrintAst.expected b/csharp/ql/test/library-tests/csharp8/PrintAst.expected index 4ec30c915b3a..f5eb7caab572 100644 --- a/csharp/ql/test/library-tests/csharp8/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp8/PrintAst.expected @@ -1,12 +1,12 @@ AlternateInterpolatedStrings.cs: # 3| [Class] AlternateInterpolatedStrings -# 5| 5: [Field] s1 +# 5| 6: [Field] s1 # 5| -1: [TypeMention] string # 5| 1: [InterpolatedStringExpr] $"..." # 5| 0: [StringLiteralUtf16] "C:" # 5| 1: [InterpolatedStringInsertExpr] {...} # 5| 0: [IntLiteral] 12 -# 6| 6: [Field] s2 +# 6| 7: [Field] s2 # 6| -1: [TypeMention] string # 6| 1: [InterpolatedStringExpr] $"..." # 6| 0: [StringLiteralUtf16] "C:" @@ -14,7 +14,7 @@ AlternateInterpolatedStrings.cs: # 6| 0: [IntLiteral] 12 AsyncStreams.cs: # 6| [Class] AsyncStreams -# 8| 5: [Method] Items +# 8| 6: [Method] Items # 8| -1: [TypeMention] IAsyncEnumerable # 8| 1: [TypeMention] int # 8| 4: [BlockStmt] {...} @@ -30,7 +30,7 @@ AsyncStreams.cs: # 11| 0: [IntLiteral] 1000 # 12| 3: [YieldReturnStmt] yield return ...; # 12| 0: [IntLiteral] 3 -# 15| 6: [Method] F +# 15| 7: [Method] F # 15| -1: [TypeMention] Void # 16| 4: [BlockStmt] {...} # 17| 0: [ForeachStmt] foreach (... ... in ...) ... @@ -103,11 +103,11 @@ DefaultInterfaceMethods.cs: # 20| [Class] Person #-----| 3: (Base types) # 20| 1: [TypeMention] IPerson -# 22| 5: [Property] Name +# 22| 6: [Property] Name # 22| -1: [TypeMention] string # 22| 3: [Getter] get_Name # 22| 4: [StringLiteralUtf16] "Petra" -# 24| 6: [Property] Greeting +# 24| 7: [Property] Greeting # 24| -1: [TypeMention] IPerson # 24| -1: [TypeMention] string # 24| 3: [Getter] get_Greeting @@ -116,14 +116,14 @@ DefaultInterfaceMethods.cs: #-----| 2: (Parameters) # 24| 0: [Parameter] value # 24| 4: [BlockStmt] {...} -# 26| 7: [Method] Greet +# 26| 8: [Method] Greet # 26| -1: [TypeMention] Void # 26| 4: [BlockStmt] {...} NameResolutionSuppressNullable.cs: # 5| [Class] MyClass2 -# 7| 5: [Field] s_signalMethod +# 7| 6: [Field] s_signalMethod # 7| -1: [TypeMention] WaitCallback -# 8| 6: [Property] SignalMethod +# 8| 7: [Property] SignalMethod # 8| -1: [TypeMention] WaitCallback # 8| 3: [Getter] get_SignalMethod # 8| 4: [MethodCall] call to method EnsureInitialized @@ -133,7 +133,7 @@ NameResolutionSuppressNullable.cs: # 8| -1: [TypeMention] WaitCallback # 8| 0: [SuppressNullableWarningExpr] ...! # 8| 0: [MethodAccess] access to method M1 -# 10| 8: [Method] EnsureInitialized`1 +# 10| 9: [Method] EnsureInitialized`1 # 10| -1: [TypeMention] T #-----| 1: (Type parameters) # 10| 0: [TypeParameter] T @@ -149,7 +149,7 @@ NameResolutionSuppressNullable.cs: # 10| 0: [ParameterAccess] access to parameter target # 10| 1: [DelegateCall] delegate call # 10| -1: [ParameterAccess] access to parameter valueFactory -# 12| 9: [Method] M1 +# 12| 10: [Method] M1 # 12| -1: [TypeMention] Void #-----| 2: (Parameters) # 12| 0: [Parameter] state @@ -157,7 +157,7 @@ NameResolutionSuppressNullable.cs: # 13| 4: [BlockStmt] {...} NullCoalescingAssignment.cs: # 3| [Class] NullCoalescingAssignment -# 5| 5: [Method] NullCoalescing +# 5| 6: [Method] NullCoalescing # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} # 7| 0: [LocalVariableDeclStmt] ... ...; @@ -171,19 +171,19 @@ NullCoalescingAssignment.cs: # 8| 1: [ThisAccess] this access NullableRefTypes.cs: # 6| [Class] MyClass -# 9| 5: [Field] A +# 9| 6: [Field] A # 9| -1: [TypeMention] MyClass -# 10| 6: [Field] B +# 10| 7: [Field] B # 10| -1: [TypeMention] MyClass -# 13| 7: [Property] C +# 13| 8: [Property] C # 13| -1: [TypeMention] MyClass # 13| 3: [Getter] get_C # 13| 4: [NullLiteral] null -# 14| 8: [Property] D +# 14| 9: [Property] D # 14| -1: [TypeMention] MyClass # 14| 3: [Getter] get_D # 14| 4: [ThisAccess] this access -# 17| 9: [Indexer] Item +# 17| 10: [Indexer] Item # 17| -1: [TypeMention] MyClass #-----| 1: (Parameters) # 17| 0: [Parameter] i @@ -192,7 +192,7 @@ NullableRefTypes.cs: #-----| 2: (Parameters) # 17| 0: [Parameter] i # 17| 4: [NullLiteral] null -# 18| 10: [Indexer] Item +# 18| 11: [Indexer] Item # 18| -1: [TypeMention] MyClass #-----| 1: (Parameters) # 18| 0: [Parameter] i @@ -201,7 +201,7 @@ NullableRefTypes.cs: #-----| 2: (Parameters) # 18| 0: [Parameter] i # 18| 4: [ThisAccess] this access -# 19| 11: [Indexer] Item +# 19| 12: [Indexer] Item # 19| -1: [TypeMention] MyClass #-----| 1: (Parameters) # 19| 0: [Parameter] i @@ -210,19 +210,19 @@ NullableRefTypes.cs: #-----| 2: (Parameters) # 19| 0: [Parameter] i # 19| 4: [ThisAccess] this access -# 22| 12: [Field] G1 +# 22| 13: [Field] G1 # 22| -1: [TypeMention] MyClass[] # 22| 1: [TypeMention] MyClass -# 23| 13: [Field] G2 +# 23| 14: [Field] G2 # 23| -1: [TypeMention] MyClass[] # 23| 1: [TypeMention] MyClass -# 24| 14: [Field] G3 +# 24| 15: [Field] G3 # 24| -1: [TypeMention] MyClass[] # 24| 1: [TypeMention] MyClass -# 25| 15: [Field] H +# 25| 16: [Field] H # 25| -1: [TypeMention] MyClass[][] # 25| 1: [TypeMention] MyClass -# 26| 16: [Method] ArrayFn1 +# 26| 17: [Method] ArrayFn1 # 26| -1: [TypeMention] MyClass[] # 26| 1: [TypeMention] MyClass #-----| 2: (Parameters) @@ -231,7 +231,7 @@ NullableRefTypes.cs: # 26| 1: [TypeMention] MyClass # 26| 4: [ThrowExpr] throw ... # 26| 0: [NullLiteral] null -# 27| 17: [Method] ArrayFn2 +# 27| 18: [Method] ArrayFn2 # 27| -1: [TypeMention] MyClass[] # 27| 1: [TypeMention] MyClass #-----| 2: (Parameters) @@ -240,13 +240,13 @@ NullableRefTypes.cs: # 27| 1: [TypeMention] MyClass # 27| 4: [ThrowExpr] throw ... # 27| 0: [NullLiteral] null -# 30| 18: [Method] M +# 30| 19: [Method] M # 30| -1: [TypeMention] MyClass # 30| 4: [NullLiteral] null -# 31| 19: [Method] N +# 31| 20: [Method] N # 31| -1: [TypeMention] MyClass # 31| 4: [ThisAccess] this access -# 32| 20: [Method] O +# 32| 21: [Method] O # 32| -1: [TypeMention] Void #-----| 2: (Parameters) # 32| 0: [Parameter] a @@ -254,7 +254,7 @@ NullableRefTypes.cs: # 32| 1: [Parameter] b # 32| -1: [TypeMention] MyClass # 32| 4: [BlockStmt] {...} -# 35| 21: [Method] Locals +# 35| 22: [Method] Locals # 35| -1: [TypeMention] Void # 36| 4: [BlockStmt] {...} # 37| 0: [LocalVariableDeclStmt] ... ...; @@ -280,12 +280,12 @@ NullableRefTypes.cs: # 40| 0: [LocalVariableAccess] access to local variable d # 40| 1: [RefExpr] ref ... # 40| 0: [LocalVariableAccess] access to local variable b -# 44| 22: [DelegateType] Del1 -# 47| 23: [DelegateType] Del +# 44| 23: [DelegateType] Del1 +# 47| 24: [DelegateType] Del #-----| 2: (Parameters) # 47| 0: [Parameter] x # 47| -1: [TypeMention] MyClass -# 48| 24: [Event] P +# 48| 25: [Event] P # 48| -1: [TypeMention] Del # 48| 3: [AddEventAccessor] add_P #-----| 2: (Parameters) @@ -293,7 +293,7 @@ NullableRefTypes.cs: # 48| 4: [RemoveEventAccessor] remove_P #-----| 2: (Parameters) # 48| 0: [Parameter] value -# 51| 26: [Method] Q`1 +# 51| 27: [Method] Q`1 # 51| -1: [TypeMention] object #-----| 1: (Type parameters) # 51| 0: [TypeParameter] T @@ -301,23 +301,23 @@ NullableRefTypes.cs: # 51| 0: [Parameter] t # 51| -1: [TypeMention] T # 51| 4: [NullLiteral] null -# 54| 29: [Class] Generic`4 +# 54| 30: [Class] Generic`4 #-----| 1: (Type parameters) # 54| 0: [TypeParameter] T1 # 54| 1: [TypeParameter] T2 # 54| 2: [TypeParameter] T3 # 54| 3: [TypeParameter] T4 -# 58| 30: [Class] Generic2`2 +# 58| 31: [Class] Generic2`2 #-----| 1: (Type parameters) # 58| 0: [TypeParameter] T1 # 58| 1: [TypeParameter] T2 -# 65| 31: [Field] items2 +# 65| 32: [Field] items2 # 65| -1: [TypeMention] Generic # 65| 1: [TypeMention] MyClass # 65| 2: [TypeMention] MyClass # 65| 3: [TypeMention] IDisposable # 65| 4: [TypeMention] MyClass -# 67| 33: [Method] GenericFn`1 +# 67| 34: [Method] GenericFn`1 # 67| -1: [TypeMention] Void #-----| 1: (Type parameters) # 67| 0: [TypeParameter] T @@ -325,7 +325,7 @@ NullableRefTypes.cs: # 67| 0: [Parameter] x # 67| -1: [TypeMention] T # 68| 4: [BlockStmt] {...} -# 71| 34: [Method] CallF +# 71| 35: [Method] CallF # 71| -1: [TypeMention] MyStruct # 72| 4: [BlockStmt] {...} # 73| 0: [LocalVariableDeclStmt] ... ...; @@ -344,7 +344,7 @@ NullableRefTypes.cs: # 76| 0: [TypeAccess] access to type MyStruct # 76| 0: [TypeMention] MyStruct # 80| [Class] NullableRefTypes -# 82| 5: [Method] TestSuppressNullableWarningExpr +# 82| 6: [Method] TestSuppressNullableWarningExpr # 82| -1: [TypeMention] Void # 83| 4: [BlockStmt] {...} # 84| 0: [LocalVariableDeclStmt] ... ...; @@ -372,7 +372,7 @@ NullableRefTypes.cs: # 88| 0: [LocalVariableAccess] access to local variable y # 88| 1: [SuppressNullableWarningExpr] ...! # 88| 0: [LocalVariableAccess] access to local variable x -# 91| 6: [Method] FunctionInNullableContext +# 91| 7: [Method] FunctionInNullableContext # 91| -1: [TypeMention] Void # 92| 4: [BlockStmt] {...} # 93| 0: [LocalVariableDeclStmt] ... ...; @@ -398,49 +398,49 @@ NullableRefTypes.cs: # 96| 0: [TypeMention] Console # 96| 0: [LocalVariableAccess] access to local variable x # 100| [Class] RefTypes -# 103| 5: [Method] ReturnsRef1 +# 103| 6: [Method] ReturnsRef1 # 103| -1: [TypeMention] MyClass #-----| 2: (Parameters) # 103| 0: [Parameter] r # 103| -1: [TypeMention] MyClass # 103| 4: [RefExpr] ref ... # 103| 0: [ParameterAccess] access to parameter r -# 104| 6: [Method] ReturnsRef2 +# 104| 7: [Method] ReturnsRef2 # 104| -1: [TypeMention] MyClass #-----| 2: (Parameters) # 104| 0: [Parameter] r # 104| -1: [TypeMention] MyClass # 104| 4: [RefExpr] ref ... # 104| 0: [ParameterAccess] access to parameter r -# 105| 7: [Method] ReturnsRef3 +# 105| 8: [Method] ReturnsRef3 # 105| -1: [TypeMention] MyClass #-----| 2: (Parameters) # 105| 0: [Parameter] r # 105| -1: [TypeMention] MyClass # 105| 4: [RefExpr] ref ... # 105| 0: [ParameterAccess] access to parameter r -# 106| 8: [Method] ReturnsRef4 +# 106| 9: [Method] ReturnsRef4 # 106| -1: [TypeMention] MyClass #-----| 2: (Parameters) # 106| 0: [Parameter] r # 106| -1: [TypeMention] MyClass # 106| 4: [RefExpr] ref ... # 106| 0: [ParameterAccess] access to parameter r -# 107| 9: [Method] ReturnsRef5 +# 107| 10: [Method] ReturnsRef5 # 107| -1: [TypeMention] MyClass #-----| 2: (Parameters) # 107| 0: [Parameter] r # 107| -1: [TypeMention] MyClass # 107| 4: [RefExpr] ref ... # 107| 0: [ParameterAccess] access to parameter r -# 108| 10: [Method] ReturnsRef6 +# 108| 11: [Method] ReturnsRef6 # 108| -1: [TypeMention] MyClass #-----| 2: (Parameters) # 108| 0: [Parameter] r # 108| -1: [TypeMention] MyClass # 108| 4: [RefExpr] ref ... # 108| 0: [ParameterAccess] access to parameter r -# 110| 11: [Method] Parameters1 +# 110| 12: [Method] Parameters1 # 110| -1: [TypeMention] Void #-----| 2: (Parameters) # 110| 0: [Parameter] p1 @@ -449,99 +449,99 @@ NullableRefTypes.cs: # 110| -1: [TypeMention] MyClass # 110| 4: [ThrowExpr] throw ... # 110| 0: [NullLiteral] null -# 112| 12: [Field] Property +# 112| 13: [Field] Property # 112| -1: [TypeMention] MyClass -# 113| 13: [Property] RefProperty +# 113| 14: [Property] RefProperty # 113| -1: [TypeMention] MyClass # 113| 3: [Getter] get_RefProperty # 113| 4: [RefExpr] ref ... # 113| 0: [SuppressNullableWarningExpr] ...! # 113| 0: [FieldAccess] access to field Property # 116| [Class] ToStringWithTypes -# 118| 5: [Field] a +# 118| 6: [Field] a # 118| -1: [TypeMention] MyStruct? # 118| 1: [TypeMention] MyStruct -# 119| 6: [Field] b +# 119| 7: [Field] b # 119| -1: [TypeMention] MyStruct[] # 119| 1: [TypeMention] MyStruct -# 120| 7: [Field] c +# 120| 8: [Field] c # 120| -1: [TypeMention] Nullable[] # 120| 1: [TypeMention] MyStruct? # 120| 1: [TypeMention] MyStruct -# 121| 8: [Field] d +# 121| 9: [Field] d # 121| -1: [TypeMention] Nullable[] # 121| 1: [TypeMention] MyStruct? # 121| 1: [TypeMention] MyStruct -# 123| 9: [Field] e +# 123| 10: [Field] e # 123| -1: [TypeMention] MyClass -# 124| 10: [Field] f +# 124| 11: [Field] f # 124| -1: [TypeMention] MyClass[] # 124| 1: [TypeMention] MyClass -# 125| 11: [Field] g +# 125| 12: [Field] g # 125| -1: [TypeMention] MyClass[] # 125| 1: [TypeMention] MyClass -# 126| 12: [Field] h +# 126| 13: [Field] h # 126| -1: [TypeMention] MyClass[] # 126| 1: [TypeMention] MyClass -# 128| 13: [Field] i +# 128| 14: [Field] i # 128| -1: [TypeMention] MyClass[,][][,,] # 128| 1: [TypeMention] MyClass -# 129| 14: [Field] j +# 129| 15: [Field] j # 129| -1: [TypeMention] MyClass[,,][,][] # 129| 1: [TypeMention] MyClass -# 130| 15: [Field] k +# 130| 16: [Field] k # 130| -1: [TypeMention] MyClass[,,,][][,][,,] # 130| 1: [TypeMention] MyClass -# 131| 16: [Field] l +# 131| 17: [Field] l # 131| -1: [TypeMention] MyClass[,,][,,,][][,] # 131| 1: [TypeMention] MyClass # 136| [Class] ToStringWithTypes2 -# 138| 5: [Field] a +# 138| 6: [Field] a # 138| -1: [TypeMention] MyStruct? # 138| 1: [TypeMention] MyStruct -# 139| 6: [Field] b +# 139| 7: [Field] b # 139| -1: [TypeMention] MyStruct[] # 139| 1: [TypeMention] MyStruct -# 140| 7: [Field] c +# 140| 8: [Field] c # 140| -1: [TypeMention] Nullable[] # 140| 1: [TypeMention] MyStruct? # 140| 1: [TypeMention] MyStruct -# 141| 8: [Field] d +# 141| 9: [Field] d # 141| -1: [TypeMention] Nullable[] # 141| 1: [TypeMention] MyStruct? # 141| 1: [TypeMention] MyStruct -# 143| 9: [Field] e +# 143| 10: [Field] e # 143| -1: [TypeMention] MyClass -# 144| 10: [Field] f +# 144| 11: [Field] f # 144| -1: [TypeMention] MyClass[] # 144| 1: [TypeMention] MyClass -# 145| 11: [Field] g +# 145| 12: [Field] g # 145| -1: [TypeMention] MyClass[] # 145| 1: [TypeMention] MyClass -# 146| 12: [Field] h +# 146| 13: [Field] h # 146| -1: [TypeMention] MyClass[] # 146| 1: [TypeMention] MyClass -# 148| 13: [Field] i +# 148| 14: [Field] i # 148| -1: [TypeMention] MyClass[,][][,,] # 148| 1: [TypeMention] MyClass -# 149| 14: [Field] j +# 149| 15: [Field] j # 149| -1: [TypeMention] MyClass[,,][,][] # 149| 1: [TypeMention] MyClass -# 150| 15: [Field] k +# 150| 16: [Field] k # 150| -1: [TypeMention] MyClass[,,,][][,][,,] # 150| 1: [TypeMention] MyClass -# 151| 16: [Field] l +# 151| 17: [Field] l # 151| -1: [TypeMention] MyClass[,,][,,,][][,] # 151| 1: [TypeMention] MyClass # 154| [Class] DisabledNullability -# 156| 5: [Field] f1 +# 156| 6: [Field] f1 # 156| -1: [TypeMention] MyClass -# 157| 6: [Property] P +# 157| 7: [Property] P # 157| -1: [TypeMention] MyClass # 157| 3: [Getter] get_P # 157| 4: [ObjectCreation] object creation of type MyClass # 157| 0: [TypeMention] MyClass -# 158| 7: [Method] Fn +# 158| 8: [Method] Fn # 158| -1: [TypeMention] MyClass #-----| 2: (Parameters) # 158| 0: [Parameter] p @@ -556,16 +556,16 @@ NullableRefTypes.cs: # 161| 0: [LocalVariableAccess] access to local variable a # 165| [Struct] MyStruct # 171| [Class] TestNullableFlowStates -# 173| 5: [Method] MaybeNull +# 173| 6: [Method] MaybeNull # 173| -1: [TypeMention] string -# 175| 6: [Method] Check +# 175| 7: [Method] Check # 175| -1: [TypeMention] Void #-----| 2: (Parameters) # 175| 0: [Parameter] isNull # 175| -1: [TypeMention] string -# 177| 7: [Method] Count +# 177| 8: [Method] Count # 177| -1: [TypeMention] int -# 179| 8: [Method] LoopUnrolling +# 179| 9: [Method] LoopUnrolling # 179| -1: [TypeMention] Void # 180| 4: [BlockStmt] {...} # 181| 0: [LocalVariableDeclStmt] ... ...; @@ -594,7 +594,7 @@ NullableRefTypes.cs: # 190| 3: [ExprStmt] ...; # 190| 0: [MethodCall] call to method Check # 190| 0: [LocalVariableAccess] access to local variable x -# 193| 9: [Method] ExceptionFlow +# 193| 10: [Method] ExceptionFlow # 193| -1: [TypeMention] Void # 194| 4: [BlockStmt] {...} # 195| 0: [LocalVariableDeclStmt] ... ...; @@ -615,7 +615,7 @@ NullableRefTypes.cs: # 206| 2: [ExprStmt] ...; # 206| 0: [MethodCall] call to method Check # 206| 0: [LocalVariableAccess] access to local variable y -# 209| 10: [Method] InvocationTest +# 209| 11: [Method] InvocationTest # 209| -1: [TypeMention] string #-----| 2: (Parameters) # 209| 0: [Parameter] o @@ -630,7 +630,7 @@ NullableRefTypes.cs: # 212| 1: [ReturnStmt] return ...; # 212| 0: [MethodCall] call to method ToString # 212| -1: [LocalVariableAccess] access to local variable t -# 215| 11: [Method] ElementTest +# 215| 12: [Method] ElementTest # 215| -1: [TypeMention] Void #-----| 2: (Parameters) # 215| 0: [Parameter] list @@ -663,13 +663,13 @@ NullableRefTypes.cs: # 220| 0: [LocalVariableAccess] access to local variable d # 220| 1: [FieldAccess] access to field Field # 220| -1: [MethodCall] call to method GetSelf -# 223| 12: [Method] GetSelf +# 223| 13: [Method] GetSelf # 223| -1: [TypeMention] TestNullableFlowStates -# 225| 13: [Field] Field +# 225| 14: [Field] Field # 225| -1: [TypeMention] string StaticLocalFunctions.cs: # 3| [Class] StaticLocalFunctions -# 5| 5: [Method] Fn +# 5| 6: [Method] Fn # 5| -1: [TypeMention] int #-----| 2: (Parameters) # 5| 0: [Parameter] x @@ -702,15 +702,15 @@ UnmanagedGenericStructs.cs: #-----| 1: (Type parameters) # 3| 0: [TypeParameter] T # 3| 1: [TypeParameter] U -# 5| 5: [Field] id +# 5| 6: [Field] id # 5| -1: [TypeMention] int -# 6| 6: [Field] value1 +# 6| 7: [Field] value1 # 6| -1: [TypeMention] T -# 7| 7: [Field] value2 +# 7| 8: [Field] value2 # 7| -1: [TypeMention] U UsingDeclarations.cs: # 4| [Class] UsingDeclarations -# 6| 5: [Method] TestUsingDeclarations +# 6| 6: [Method] TestUsingDeclarations # 6| -1: [TypeMention] Void # 7| 4: [BlockStmt] {...} # 8| 0: [UsingDeclStmt] using ... ...; @@ -762,7 +762,7 @@ UsingDeclarations.cs: # 15| 1: [EmptyStmt] ; patterns.cs: # 3| [Class] Patterns -# 5| 5: [Method] IsPatterns +# 5| 6: [Method] IsPatterns # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} # 7| 0: [LocalVariableDeclStmt] ... ...; @@ -836,7 +836,7 @@ patterns.cs: # 27| 3: [PropertyPatternExpr] { ... } # 27| 0: [DiscardPatternExpr,LabeledPatternExpr] _ # 28| 1: [BlockStmt] {...} -# 32| 6: [Method] SwitchStatements +# 32| 7: [Method] SwitchStatements # 32| -1: [TypeMention] Void # 33| 4: [BlockStmt] {...} # 34| 0: [LocalVariableDeclStmt] ... ...; @@ -1019,7 +1019,7 @@ patterns.cs: # 94| 0: [ConstantPatternExpr,IntLiteral] 2 # 94| 1: [DiscardPatternExpr] _ # 94| 3: [BreakStmt] break; -# 98| 7: [Method] Expressions +# 98| 8: [Method] Expressions # 98| -1: [TypeMention] Void #-----| 2: (Parameters) # 98| 0: [Parameter] x @@ -1108,7 +1108,7 @@ patterns.cs: # 119| 2: [TupleExpr] (..., ...) # 119| 0: [IntLiteral] 0 # 119| 1: [IntLiteral] 0 -# 123| 8: [Method] Expressions2 +# 123| 9: [Method] Expressions2 # 123| -1: [TypeMention] Void #-----| 2: (Parameters) # 123| 0: [Parameter] o @@ -1203,18 +1203,18 @@ patterns.cs: # 147| -1: [TypeAccess] access to type Console # 147| 0: [TypeMention] Console # 147| 0: [StringLiteralUtf16] "Invalid operation" -# 151| 9: [Struct] MyStruct -# 153| 5: [Field] X +# 151| 10: [Struct] MyStruct +# 153| 6: [Field] X # 153| -1: [TypeMention] int -# 154| 6: [Property] Y +# 154| 7: [Property] Y # 154| -1: [TypeMention] int # 154| 3: [Getter] get_Y # 154| 4: [IntLiteral] 10 -# 156| 7: [Property] S +# 156| 8: [Property] S # 156| -1: [TypeMention] MyStruct # 156| 3: [Getter] get_S # 156| 4: [ThisAccess] this access -# 158| 8: [Method] Deconstruct +# 158| 9: [Method] Deconstruct # 158| -1: [TypeMention] Void #-----| 2: (Parameters) # 158| 0: [Parameter] x @@ -1230,12 +1230,12 @@ patterns.cs: # 161| 0: [AssignExpr] ... = ... # 161| 0: [ParameterAccess] access to parameter y # 161| 1: [PropertyCall] access to property Y -# 164| 9: [Method] Deconstruct +# 164| 10: [Method] Deconstruct # 164| -1: [TypeMention] Void # 165| 4: [BlockStmt] {...} ranges.cs: # 3| [Class] Ranges -# 5| 5: [Method] F +# 5| 6: [Method] F # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} # 7| 0: [LocalVariableDeclStmt] ... ...; diff --git a/csharp/ql/test/library-tests/csharp9-standalone/globalStmt.expected b/csharp/ql/test/library-tests/csharp9-standalone/globalStmt.expected index eaa01512c18d..a8db6605f8d8 100644 --- a/csharp/ql/test/library-tests/csharp9-standalone/globalStmt.expected +++ b/csharp/ql/test/library-tests/csharp9-standalone/globalStmt.expected @@ -7,4 +7,6 @@ globalBlock | GlobalStmt.cs:5:1:24:0 | {...} | GlobalStmt.cs:5:1:24:0 |
$ | GlobalStmt.cs:1:1:1:0 | args | GlobalStmt.cs:5:1:24:0 | Program | methods | GlobalStmt.cs:5:1:24:0 |
$ | entry | +| GlobalStmt.cs:5:1:24:0 | | non-entry | +| GlobalStmt.cs:17:14:17:17 | | non-entry | | GlobalStmt.cs:19:8:19:9 | M1 | non-entry | diff --git a/csharp/ql/test/library-tests/csharp9/PrintAst.expected b/csharp/ql/test/library-tests/csharp9/PrintAst.expected index e3b89de20096..459349fb9fc8 100644 --- a/csharp/ql/test/library-tests/csharp9/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp9/PrintAst.expected @@ -1,17 +1,17 @@ AnonymousObjectCreation.cs: # 5| [Class] AnonObj -# 7| 5: [Field] l +# 7| 6: [Field] l # 7| -1: [TypeMention] List # 7| 1: [TypeMention] AnonObj # 7| 1: [CastExpr] (...) ... # 7| 1: [ObjectCreation] object creation of type List -# 9| 6: [Property] Prop1 +# 9| 7: [Property] Prop1 # 9| -1: [TypeMention] int # 9| 3: [Getter] get_Prop1 # 9| 4: [Setter] set_Prop1 #-----| 2: (Parameters) # 9| 0: [Parameter] value -# 11| 7: [Method] M1 +# 11| 8: [Method] M1 # 11| -1: [TypeMention] AnonObj #-----| 2: (Parameters) # 11| 0: [Parameter] t @@ -29,17 +29,17 @@ AnonymousObjectCreation.cs: # 14| 1: [ReturnStmt] return ...; # 14| 0: [CastExpr] (...) ... # 14| 1: [ObjectCreation] object creation of type AnonObj -# 17| 8: [DelegateType] D +# 17| 9: [DelegateType] D #-----| 2: (Parameters) # 17| 0: [Parameter] x # 17| -1: [TypeMention] int -# 19| 9: [Method] M2 +# 19| 10: [Method] M2 # 19| -1: [TypeMention] Void #-----| 2: (Parameters) # 19| 0: [Parameter] x # 19| -1: [TypeMention] int # 19| 4: [BlockStmt] {...} -# 21| 10: [Method] GetM +# 21| 11: [Method] GetM # 21| -1: [TypeMention] D # 21| 4: [BlockStmt] {...} # 21| 0: [ReturnStmt] return ...; @@ -47,7 +47,7 @@ AnonymousObjectCreation.cs: # 21| 1: [ExplicitDelegateCreation] delegate creation of type D # 21| 0: [ImplicitDelegateCreation] delegate creation of type D # 21| 0: [MethodAccess] access to method M2 -# 23| 11: [Method] MethodAdd +# 23| 12: [Method] MethodAdd # 23| -1: [TypeMention] Void # 24| 4: [BlockStmt] {...} # 25| 0: [LocalVariableDeclStmt] ... ...; @@ -59,13 +59,13 @@ AnonymousObjectCreation.cs: # 25| 1: [ObjectCreation] object creation of type List BinaryPattern.cs: # 3| [Class] BinaryPattern -# 5| 5: [Property] P1 +# 5| 6: [Property] P1 # 5| -1: [TypeMention] int # 5| 3: [Getter] get_P1 # 5| 4: [Setter] set_P1 #-----| 2: (Parameters) # 5| 0: [Parameter] value -# 7| 6: [Method] M1 +# 7| 7: [Method] M1 # 7| -1: [TypeMention] bool #-----| 2: (Parameters) # 7| 0: [Parameter] c @@ -75,7 +75,7 @@ BinaryPattern.cs: # 8| 1: [OrPatternExpr] ... or ... # 8| 0: [CharLiteral,ConstantPatternExpr] a # 8| 1: [CharLiteral,ConstantPatternExpr] b -# 9| 7: [Method] M2 +# 9| 8: [Method] M2 # 9| -1: [TypeMention] bool #-----| 2: (Parameters) # 9| 0: [Parameter] c @@ -91,7 +91,7 @@ BinaryPattern.cs: # 10| 0: [TypeMention] BinaryPattern # 10| 3: [PropertyPatternExpr] { ... } # 10| 0: [ConstantPatternExpr,IntLiteral,LabeledPatternExpr] 1 -# 11| 8: [Method] M3 +# 11| 9: [Method] M3 # 11| -1: [TypeMention] bool #-----| 2: (Parameters) # 11| 0: [Parameter] c @@ -103,7 +103,7 @@ BinaryPattern.cs: # 12| 0: [TypeMention] object # 12| 1: [VariablePatternExpr] BinaryPattern u # 12| 0: [TypeMention] BinaryPattern -# 14| 9: [Method] M4 +# 14| 10: [Method] M4 # 14| -1: [TypeMention] string #-----| 2: (Parameters) # 14| 0: [Parameter] i @@ -122,7 +122,7 @@ BinaryPattern.cs: # 19| 2: [StringLiteralUtf16] "other" CovariantReturn.cs: # 1| [Class] A -# 3| 5: [Method] M1 +# 3| 6: [Method] M1 # 3| -1: [TypeMention] A # 3| 4: [BlockStmt] {...} # 3| 0: [ThrowStmt] throw ...; @@ -130,14 +130,14 @@ CovariantReturn.cs: # 6| [Class] B #-----| 3: (Base types) # 6| 0: [TypeMention] A -# 8| 5: [Method] M1 +# 8| 6: [Method] M1 # 8| -1: [TypeMention] B # 8| 4: [BlockStmt] {...} # 8| 0: [ThrowStmt] throw ...; # 8| 0: [NullLiteral] null Discard.cs: # 3| [Class] Discard -# 5| 5: [Method] M1 +# 5| 6: [Method] M1 # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} # 7| 0: [LocalVariableDeclStmt] ... ...; @@ -227,7 +227,7 @@ ForeachExtension.cs: # 14| 0: [YieldReturnStmt] yield return ...; # 14| 0: [LocalVariableAccess] access to local variable i # 19| [Class] Program -# 21| 5: [Method] Main +# 21| 6: [Method] Main # 21| -1: [TypeMention] Task # 22| 4: [BlockStmt] {...} # 23| 0: [LocalVariableDeclStmt] ... ...; @@ -273,7 +273,7 @@ ForeachExtension.cs: # 37| 1: [IntLiteral] 2 # 37| 2: [IntLiteral] 3 # 38| 2: [BlockStmt] {...} -# 42| 6: [Method] GetAsyncEnumerator +# 42| 7: [Method] GetAsyncEnumerator # 42| -1: [TypeMention] IAsyncEnumerator # 42| 1: [TypeMention] int # 43| 4: [BlockStmt] {...} @@ -289,7 +289,7 @@ ForeachExtension.cs: # 46| 0: [IntLiteral] 1 FunctionPointer.cs: # 3| [Class] FnPointer -# 5| 5: [Class] Program +# 5| 6: [Class] Program # 7| 5: [Field] pointer # 7| -1: [TypeMention] delegate* default # 7| 1: [AddressOfExpr] &... @@ -407,7 +407,7 @@ FunctionPointer.cs: # 48| 0: [TypeMention] A InitOnlyProperty.cs: # 3| [Class] Base -# 5| 5: [Property] Prop0 +# 5| 6: [Property] Prop0 # 5| -1: [TypeMention] int # 5| 3: [Getter] get_Prop0 # 5| 4: [BlockStmt] {...} @@ -421,13 +421,13 @@ InitOnlyProperty.cs: # 5| 0: [AssignExpr] ... = ... # 5| 0: [PropertyCall] access to property Prop1 # 5| 1: [ParameterAccess] access to parameter value -# 6| 6: [Property] Prop1 +# 6| 7: [Property] Prop1 # 6| -1: [TypeMention] int # 6| 3: [Getter] get_Prop1 # 6| 4: [Setter] set_Prop1 #-----| 2: (Parameters) # 6| 0: [Parameter] value -# 7| 7: [Property] Prop2 +# 7| 8: [Property] Prop2 # 7| -1: [TypeMention] int # 7| 3: [Getter] get_Prop2 # 7| 4: [Setter] set_Prop2 @@ -436,13 +436,13 @@ InitOnlyProperty.cs: # 11| [Class] Derived #-----| 3: (Base types) # 11| 0: [TypeMention] Base -# 13| 5: [Property] Prop1 +# 13| 6: [Property] Prop1 # 13| -1: [TypeMention] int # 13| 3: [Getter] get_Prop1 # 13| 4: [Setter] set_Prop1 #-----| 2: (Parameters) # 13| 0: [Parameter] value -# 14| 6: [Property] Prop2 +# 14| 7: [Property] Prop2 # 14| -1: [TypeMention] int # 16| 3: [Getter] get_Prop2 # 16| 4: [BlockStmt] {...} @@ -466,7 +466,7 @@ InitOnlyProperty.cs: # 21| 0: [PropertyCall] access to property Prop0 # 21| 1: [ParameterAccess] access to parameter value # 26| [Class] C1 -# 28| 5: [Method] M1 +# 28| 6: [Method] M1 # 28| -1: [TypeMention] Void # 29| 4: [BlockStmt] {...} # 30| 0: [LocalVariableDeclStmt] ... ...; @@ -490,7 +490,7 @@ IsExternalInit.cs: # 6| 1: [Class] IsExternalInit LambdaModifier.cs: # 4| [Class] Class1 -# 6| 5: [Method] M1 +# 6| 6: [Method] M1 # 6| -1: [TypeMention] Task # 7| 4: [BlockStmt] {...} # 8| 0: [LocalFunctionStmt] m(...) @@ -550,7 +550,7 @@ LambdaModifier.cs: # 15| 0: [TypeMention] Task LocalFunction.cs: # 4| [Class] LocalFunction -# 6| 5: [Method] M1 +# 6| 6: [Method] M1 # 6| -1: [TypeMention] Task # 7| 4: [BlockStmt] {...} # 8| 0: [LocalVariableDeclStmt] ... ...; @@ -578,7 +578,7 @@ LocalFunction.cs: # 14| 0: [IntLiteral] 2 # 16| 3: [LocalFunctionStmt] localExtern(...) # 16| 0: [LocalFunction] localExtern -# 19| 6: [Method] M2 +# 19| 7: [Method] M2 # 19| -1: [TypeMention] Void # 20| 4: [BlockStmt] {...} # 21| 0: [LocalFunctionStmt] dup(...) @@ -610,7 +610,7 @@ LocalFunction.cs: # 27| 1: [IntLiteral] 42 NativeInt.cs: # 3| [Class] NativeInt -# 5| 5: [Method] M1 +# 5| 6: [Method] M1 # 5| -1: [TypeMention] Void #-----| 2: (Parameters) # 5| 0: [Parameter] j @@ -654,7 +654,7 @@ NativeInt.cs: # 12| 0: [TypeAccess] access to type IntPtr # 12| 0: [TypeMention] IntPtr # 12| 1: [IntLiteral] 42 -# 15| 6: [Method] M2 +# 15| 7: [Method] M2 # 15| -1: [TypeMention] Void # 16| 4: [BlockStmt] {...} # 17| 0: [LocalVariableDeclStmt] ... ...; @@ -718,7 +718,7 @@ NativeInt.cs: ParenthesizedPattern.cs: # 3| [Class] T # 5| [Class] ParenthesizedPattern -# 7| 5: [Method] M1 +# 7| 6: [Method] M1 # 7| -1: [TypeMention] Void #-----| 2: (Parameters) # 7| 0: [Parameter] o @@ -738,7 +738,7 @@ ParenthesizedPattern.cs: # 13| 0: [VariablePatternExpr] Object p2 # 13| 3: [PropertyPatternExpr] { ... } # 14| 1: [BlockStmt] {...} -# 18| 6: [Method] M2 +# 18| 7: [Method] M2 # 18| -1: [TypeMention] Void #-----| 2: (Parameters) # 18| 0: [Parameter] o @@ -778,23 +778,23 @@ ParenthesizedPattern.cs: # 26| 2: [IntLiteral] 5 Record.cs: # 4| [RecordClass] Person -# 4| 11: [NEOperator] != +# 4| 12: [NEOperator] != #-----| 2: (Parameters) # 4| 0: [Parameter] left # 4| 1: [Parameter] right -# 4| 12: [EQOperator] == +# 4| 13: [EQOperator] == #-----| 2: (Parameters) # 4| 0: [Parameter] left # 4| 1: [Parameter] right -# 4| 13: [Property] EqualityContract +# 4| 14: [Property] EqualityContract # 4| 3: [Getter] get_EqualityContract -# 6| 14: [Property] LastName +# 6| 15: [Property] LastName # 6| -1: [TypeMention] string # 6| 3: [Getter] get_LastName -# 7| 15: [Property] FirstName +# 7| 16: [Property] FirstName # 7| -1: [TypeMention] string # 7| 3: [Getter] get_FirstName -# 9| 16: [InstanceConstructor] Person +# 9| 17: [InstanceConstructor] Person #-----| 2: (Parameters) # 9| 0: [Parameter] first # 9| -1: [TypeMention] string @@ -808,20 +808,20 @@ Record.cs: # 9| 0: [ParameterAccess] access to parameter first # 9| 1: [ParameterAccess] access to parameter last # 12| [RecordClass] Teacher -# 12| 12: [NEOperator] != +# 12| 13: [NEOperator] != #-----| 2: (Parameters) # 12| 0: [Parameter] left # 12| 1: [Parameter] right -# 12| 13: [EQOperator] == +# 12| 14: [EQOperator] == #-----| 2: (Parameters) # 12| 0: [Parameter] left # 12| 1: [Parameter] right -# 12| 14: [Property] EqualityContract +# 12| 15: [Property] EqualityContract # 12| 3: [Getter] get_EqualityContract -# 14| 15: [Property] Subject +# 14| 16: [Property] Subject # 14| -1: [TypeMention] string # 14| 3: [Getter] get_Subject -# 16| 16: [InstanceConstructor] Teacher +# 16| 17: [InstanceConstructor] Teacher #-----| 2: (Parameters) # 16| 0: [Parameter] first # 16| -1: [TypeMention] string @@ -836,20 +836,20 @@ Record.cs: # 17| 0: [PropertyCall] access to property Subject # 17| 1: [ParameterAccess] access to parameter sub # 20| [RecordClass] Student -# 20| 12: [NEOperator] != +# 20| 13: [NEOperator] != #-----| 2: (Parameters) # 20| 0: [Parameter] left # 20| 1: [Parameter] right -# 20| 13: [EQOperator] == +# 20| 14: [EQOperator] == #-----| 2: (Parameters) # 20| 0: [Parameter] left # 20| 1: [Parameter] right -# 20| 14: [Property] EqualityContract +# 20| 15: [Property] EqualityContract # 20| 3: [Getter] get_EqualityContract -# 22| 15: [Property] Level +# 22| 16: [Property] Level # 22| -1: [TypeMention] int # 22| 3: [Getter] get_Level -# 24| 16: [InstanceConstructor] Student +# 24| 17: [InstanceConstructor] Student #-----| 2: (Parameters) # 24| 0: [Parameter] first # 24| -1: [TypeMention] string @@ -864,44 +864,44 @@ Record.cs: # 24| 0: [PropertyCall] access to property Level # 24| 1: [ParameterAccess] access to parameter level # 27| [RecordClass] Person1 -# 27| 12: [NEOperator] != +# 27| 13: [NEOperator] != #-----| 2: (Parameters) # 27| 0: [Parameter] left # 27| 1: [Parameter] right -# 27| 13: [EQOperator] == +# 27| 14: [EQOperator] == #-----| 2: (Parameters) # 27| 0: [Parameter] left # 27| 1: [Parameter] right -# 27| 14: [Property] EqualityContract +# 27| 15: [Property] EqualityContract # 27| 3: [Getter] get_EqualityContract -# 27| 15: [InstanceConstructor,PrimaryConstructor] Person1 +# 27| 16: [InstanceConstructor,PrimaryConstructor] Person1 #-----| 2: (Parameters) # 27| 0: [Parameter] FirstName # 27| -1: [TypeMention] string # 27| 1: [Parameter] LastName # 27| -1: [TypeMention] string -# 27| 16: [Property] FirstName +# 27| 17: [Property] FirstName # 27| 3: [Getter] get_FirstName # 27| 4: [Setter] set_FirstName #-----| 2: (Parameters) # 27| 0: [Parameter] value -# 27| 17: [Property] LastName +# 27| 18: [Property] LastName # 27| 3: [Getter] get_LastName # 27| 4: [Setter] set_LastName #-----| 2: (Parameters) # 27| 0: [Parameter] value # 29| [RecordClass] Teacher1 -# 29| 13: [NEOperator] != +# 29| 14: [NEOperator] != #-----| 2: (Parameters) # 29| 0: [Parameter] left # 29| 1: [Parameter] right -# 29| 14: [EQOperator] == +# 29| 15: [EQOperator] == #-----| 2: (Parameters) # 29| 0: [Parameter] left # 29| 1: [Parameter] right -# 29| 15: [Property] EqualityContract +# 29| 16: [Property] EqualityContract # 29| 3: [Getter] get_EqualityContract -# 29| 16: [InstanceConstructor,PrimaryConstructor] Teacher1 +# 29| 17: [InstanceConstructor,PrimaryConstructor] Teacher1 #-----| 2: (Parameters) # 29| 0: [Parameter] FirstName # 29| -1: [TypeMention] string @@ -912,23 +912,23 @@ Record.cs: # 30| 3: [ConstructorInitializer] call to constructor Person1 # 30| 0: [ParameterAccess] access to parameter FirstName # 30| 1: [ParameterAccess] access to parameter LastName -# 29| 17: [Property] Subject +# 29| 18: [Property] Subject # 29| 3: [Getter] get_Subject # 29| 4: [Setter] set_Subject #-----| 2: (Parameters) # 29| 0: [Parameter] value # 32| [RecordClass] Student1 -# 32| 13: [NEOperator] != +# 32| 14: [NEOperator] != #-----| 2: (Parameters) # 32| 0: [Parameter] left # 32| 1: [Parameter] right -# 32| 14: [EQOperator] == +# 32| 15: [EQOperator] == #-----| 2: (Parameters) # 32| 0: [Parameter] left # 32| 1: [Parameter] right -# 32| 15: [Property] EqualityContract +# 32| 16: [Property] EqualityContract # 32| 3: [Getter] get_EqualityContract -# 32| 16: [InstanceConstructor,PrimaryConstructor] Student1 +# 32| 17: [InstanceConstructor,PrimaryConstructor] Student1 #-----| 2: (Parameters) # 32| 0: [Parameter] FirstName # 32| -1: [TypeMention] string @@ -939,61 +939,61 @@ Record.cs: # 33| 3: [ConstructorInitializer] call to constructor Person1 # 33| 0: [ParameterAccess] access to parameter FirstName # 33| 1: [ParameterAccess] access to parameter LastName -# 32| 17: [Property] Level +# 32| 18: [Property] Level # 32| 3: [Getter] get_Level # 32| 4: [Setter] set_Level #-----| 2: (Parameters) # 32| 0: [Parameter] value # 35| [RecordClass] Pet -# 35| 12: [NEOperator] != +# 35| 13: [NEOperator] != #-----| 2: (Parameters) # 35| 0: [Parameter] left # 35| 1: [Parameter] right -# 35| 13: [EQOperator] == +# 35| 14: [EQOperator] == #-----| 2: (Parameters) # 35| 0: [Parameter] left # 35| 1: [Parameter] right -# 35| 14: [Property] EqualityContract +# 35| 15: [Property] EqualityContract # 35| 3: [Getter] get_EqualityContract -# 35| 15: [InstanceConstructor,PrimaryConstructor] Pet +# 35| 16: [InstanceConstructor,PrimaryConstructor] Pet #-----| 2: (Parameters) # 35| 0: [Parameter] Name # 35| -1: [TypeMention] string -# 35| 16: [Property] Name +# 35| 17: [Property] Name # 35| 3: [Getter] get_Name # 35| 4: [Setter] set_Name #-----| 2: (Parameters) # 35| 0: [Parameter] value -# 37| 17: [Method] ShredTheFurniture +# 37| 18: [Method] ShredTheFurniture # 37| -1: [TypeMention] Void # 38| 4: [MethodCall] call to method WriteLine # 38| -1: [TypeAccess] access to type Console # 38| 0: [TypeMention] Console # 38| 0: [StringLiteralUtf16] "Shredding furniture" # 41| [RecordClass] Dog -# 41| 12: [NEOperator] != +# 41| 13: [NEOperator] != #-----| 2: (Parameters) # 41| 0: [Parameter] left # 41| 1: [Parameter] right -# 41| 13: [EQOperator] == +# 41| 14: [EQOperator] == #-----| 2: (Parameters) # 41| 0: [Parameter] left # 41| 1: [Parameter] right -# 41| 14: [InstanceConstructor,PrimaryConstructor] Dog +# 41| 15: [InstanceConstructor,PrimaryConstructor] Dog #-----| 2: (Parameters) # 41| 0: [Parameter] Name # 41| -1: [TypeMention] string # 41| 3: [ConstructorInitializer] call to constructor Pet # 41| 0: [ParameterAccess] access to parameter Name -# 41| 15: [Property] EqualityContract +# 41| 16: [Property] EqualityContract # 41| 3: [Getter] get_EqualityContract -# 43| 16: [Method] WagTail +# 43| 17: [Method] WagTail # 43| -1: [TypeMention] Void # 44| 4: [MethodCall] call to method WriteLine # 44| -1: [TypeAccess] access to type Console # 44| 0: [TypeMention] Console # 44| 0: [StringLiteralUtf16] "It's tail wagging time" -# 46| 17: [Method] ToString +# 46| 18: [Method] ToString # 46| -1: [TypeMention] string # 47| 4: [BlockStmt] {...} # 48| 0: [LocalVariableDeclStmt] ... ...; @@ -1013,37 +1013,37 @@ Record.cs: # 50| -1: [LocalVariableAccess] access to local variable s # 50| 1: [StringLiteralUtf16] " is a dog" # 54| [RecordClass] R1 -# 54| 12: [NEOperator] != +# 54| 13: [NEOperator] != #-----| 2: (Parameters) # 54| 0: [Parameter] left # 54| 1: [Parameter] right -# 54| 13: [EQOperator] == +# 54| 14: [EQOperator] == #-----| 2: (Parameters) # 54| 0: [Parameter] left # 54| 1: [Parameter] right -# 54| 14: [Property] EqualityContract +# 54| 15: [Property] EqualityContract # 54| 3: [Getter] get_EqualityContract -# 54| 15: [InstanceConstructor,PrimaryConstructor] R1 +# 54| 16: [InstanceConstructor,PrimaryConstructor] R1 #-----| 2: (Parameters) # 54| 0: [Parameter] A # 54| -1: [TypeMention] string -# 54| 16: [Property] A +# 54| 17: [Property] A # 54| 3: [Getter] get_A # 54| 4: [Setter] set_A #-----| 2: (Parameters) # 54| 0: [Parameter] value # 56| [RecordClass] R2 -# 56| 13: [NEOperator] != +# 56| 14: [NEOperator] != #-----| 2: (Parameters) # 56| 0: [Parameter] left # 56| 1: [Parameter] right -# 56| 14: [EQOperator] == +# 56| 15: [EQOperator] == #-----| 2: (Parameters) # 56| 0: [Parameter] left # 56| 1: [Parameter] right -# 56| 15: [Property] EqualityContract +# 56| 16: [Property] EqualityContract # 56| 3: [Getter] get_EqualityContract -# 56| 16: [InstanceConstructor,PrimaryConstructor] R2 +# 56| 17: [InstanceConstructor,PrimaryConstructor] R2 #-----| 2: (Parameters) # 56| 0: [Parameter] A # 56| -1: [TypeMention] string @@ -1051,13 +1051,13 @@ Record.cs: # 56| -1: [TypeMention] string # 56| 3: [ConstructorInitializer] call to constructor R1 # 56| 0: [ParameterAccess] access to parameter A -# 56| 17: [Property] B +# 56| 18: [Property] B # 56| 3: [Getter] get_B # 56| 4: [Setter] set_B #-----| 2: (Parameters) # 56| 0: [Parameter] value # 58| [Class] Record1 -# 60| 5: [Method] M1 +# 60| 6: [Method] M1 # 60| -1: [TypeMention] Void # 61| 4: [BlockStmt] {...} # 62| 0: [LocalVariableDeclStmt] ... ...; @@ -1084,7 +1084,7 @@ Record.cs: # 65| 0: [OperatorCall] call to operator == # 65| 0: [LocalVariableAccess] access to local variable student # 65| 1: [LocalVariableAccess] access to local variable person -# 68| 6: [Method] M2 +# 68| 7: [Method] M2 # 68| -1: [TypeMention] Void # 69| 4: [BlockStmt] {...} # 70| 0: [LocalVariableDeclStmt] ... ...; @@ -1140,7 +1140,7 @@ Record.cs: # 77| 1: [WithExpr] ... with { ... } # 77| 0: [LocalVariableAccess] access to local variable p1 # 77| 1: [ObjectInitializer] { ..., ... } -# 80| 7: [Method] M3 +# 80| 8: [Method] M3 # 80| -1: [TypeMention] Void # 81| 4: [BlockStmt] {...} # 82| 0: [LocalVariableDeclStmt] ... ...; @@ -1168,7 +1168,7 @@ Record.cs: # 84| 1: [StringLiteralUtf16] "C" RelationalPattern.cs: # 3| [Class] RelationalPattern -# 5| 5: [Method] M1 +# 5| 6: [Method] M1 # 5| -1: [TypeMention] bool #-----| 2: (Parameters) # 5| 0: [Parameter] c @@ -1177,7 +1177,7 @@ RelationalPattern.cs: # 6| 0: [ParameterAccess] access to parameter c # 6| 1: [GEPattern] >= ... # 6| 0: [CharLiteral] a -# 7| 6: [Method] M2 +# 7| 7: [Method] M2 # 7| -1: [TypeMention] bool #-----| 2: (Parameters) # 7| 0: [Parameter] c @@ -1186,7 +1186,7 @@ RelationalPattern.cs: # 8| 0: [ParameterAccess] access to parameter c # 8| 1: [GTPattern] > ... # 8| 0: [CharLiteral] a -# 9| 7: [Method] M3 +# 9| 8: [Method] M3 # 9| -1: [TypeMention] bool #-----| 2: (Parameters) # 9| 0: [Parameter] c @@ -1195,7 +1195,7 @@ RelationalPattern.cs: # 10| 0: [ParameterAccess] access to parameter c # 10| 1: [LEPattern] <= ... # 10| 0: [CharLiteral] a -# 11| 8: [Method] M4 +# 11| 9: [Method] M4 # 11| -1: [TypeMention] bool #-----| 2: (Parameters) # 11| 0: [Parameter] c @@ -1204,7 +1204,7 @@ RelationalPattern.cs: # 12| 0: [ParameterAccess] access to parameter c # 12| 1: [LTPattern] < ... # 12| 0: [CharLiteral] a -# 14| 9: [Method] M5 +# 14| 10: [Method] M5 # 14| -1: [TypeMention] string #-----| 2: (Parameters) # 14| 0: [Parameter] i @@ -1225,7 +1225,7 @@ RelationalPattern.cs: # 20| 2: [StringLiteralUtf16] "other" TargetType.cs: # 5| [Class] TargetType -# 7| 5: [Method] M2 +# 7| 6: [Method] M2 # 7| -1: [TypeMention] Void # 8| 4: [BlockStmt] {...} # 9| 0: [LocalVariableDeclStmt] ... ...; @@ -1356,7 +1356,7 @@ TargetType.cs: # 36| 0: [ObjectCreation] object creation of type TargetType # 36| 0: [TypeMention] TargetType # 37| 2: [IntLiteral] 12 -# 40| 6: [ImplicitConversionOperator] implicit conversion +# 40| 7: [ImplicitConversionOperator] implicit conversion # 40| -1: [TypeMention] int #-----| 2: (Parameters) # 40| 0: [Parameter] d @@ -1365,14 +1365,14 @@ TargetType.cs: TypeParameterNullability.cs: # 1| [Interface] I1 # 3| [Class] A2 -# 5| 5: [Method] F1`1 +# 5| 6: [Method] F1`1 # 5| -1: [TypeMention] Void #-----| 1: (Type parameters) # 5| 0: [TypeParameter] T #-----| 2: (Parameters) # 5| 0: [Parameter] t # 5| 4: [BlockStmt] {...} -# 6| 6: [Method] F2`1 +# 6| 7: [Method] F2`1 # 6| -1: [TypeMention] Void #-----| 1: (Type parameters) # 6| 0: [TypeParameter] T @@ -1381,28 +1381,28 @@ TypeParameterNullability.cs: # 6| -1: [TypeMention] T? # 6| 1: [TypeMention] T # 6| 4: [BlockStmt] {...} -# 7| 7: [Method] F3`1 +# 7| 8: [Method] F3`1 # 7| -1: [TypeMention] Void #-----| 1: (Type parameters) # 7| 0: [TypeParameter] T #-----| 2: (Parameters) # 7| 0: [Parameter] t # 7| 4: [BlockStmt] {...} -# 8| 8: [Method] F4`1 +# 8| 9: [Method] F4`1 # 8| -1: [TypeMention] Void #-----| 1: (Type parameters) # 8| 0: [TypeParameter] T #-----| 2: (Parameters) # 8| 0: [Parameter] t # 8| 4: [BlockStmt] {...} -# 9| 9: [Method] F5`1 +# 9| 10: [Method] F5`1 # 9| -1: [TypeMention] Void #-----| 1: (Type parameters) # 9| 0: [TypeParameter] T #-----| 2: (Parameters) # 9| 0: [Parameter] t # 9| 4: [BlockStmt] {...} -# 10| 10: [Method] F6`1 +# 10| 11: [Method] F6`1 # 10| -1: [TypeMention] Void #-----| 1: (Type parameters) # 10| 0: [TypeParameter] T @@ -1414,14 +1414,14 @@ TypeParameterNullability.cs: # 13| [Class] B2 #-----| 3: (Base types) # 13| 0: [TypeMention] A2 -# 15| 5: [Method] F1`1 +# 15| 6: [Method] F1`1 # 15| -1: [TypeMention] Void #-----| 1: (Type parameters) # 15| 0: [TypeParameter] T #-----| 2: (Parameters) # 15| 0: [Parameter] t # 15| 4: [BlockStmt] {...} -# 16| 6: [Method] F2`1 +# 16| 7: [Method] F2`1 # 16| -1: [TypeMention] Void #-----| 1: (Type parameters) # 16| 0: [TypeParameter] T @@ -1430,21 +1430,21 @@ TypeParameterNullability.cs: # 16| -1: [TypeMention] T? # 16| 1: [TypeMention] T # 16| 4: [BlockStmt] {...} -# 17| 7: [Method] F3`1 +# 17| 8: [Method] F3`1 # 17| -1: [TypeMention] Void #-----| 1: (Type parameters) # 17| 0: [TypeParameter] T #-----| 2: (Parameters) # 17| 0: [Parameter] t # 17| 4: [BlockStmt] {...} -# 18| 8: [Method] F4`1 +# 18| 9: [Method] F4`1 # 18| -1: [TypeMention] Void #-----| 1: (Type parameters) # 18| 0: [TypeParameter] T #-----| 2: (Parameters) # 18| 0: [Parameter] t # 18| 4: [BlockStmt] {...} -# 19| 9: [Method] F6`1 +# 19| 10: [Method] F6`1 # 19| -1: [TypeMention] Void #-----| 1: (Type parameters) # 19| 0: [TypeParameter] T @@ -1456,7 +1456,7 @@ TypeParameterNullability.cs: # 22| [Class] B3 #-----| 3: (Base types) # 22| 0: [TypeMention] A2 -# 24| 5: [Method] F2`1 +# 24| 6: [Method] F2`1 # 24| -1: [TypeMention] Void #-----| 1: (Type parameters) # 24| 0: [TypeParameter] T @@ -1467,7 +1467,7 @@ TypeParameterNullability.cs: # 24| 4: [BlockStmt] {...} TypePattern.cs: # 3| [Class] TypePattern -# 5| 5: [Method] M1 +# 5| 6: [Method] M1 # 5| -1: [TypeMention] object #-----| 2: (Parameters) # 5| 0: [Parameter] o1 @@ -1516,13 +1516,13 @@ TypePattern.cs: # 14| 2: [LocalVariableAccess] access to local variable o UnaryPattern.cs: # 3| [Class] UnaryPattern -# 5| 5: [Property] P1 +# 5| 6: [Property] P1 # 5| -1: [TypeMention] int # 5| 3: [Getter] get_P1 # 5| 4: [Setter] set_P1 #-----| 2: (Parameters) # 5| 0: [Parameter] value -# 7| 6: [Method] M1 +# 7| 7: [Method] M1 # 7| -1: [TypeMention] bool #-----| 2: (Parameters) # 7| 0: [Parameter] c @@ -1531,7 +1531,7 @@ UnaryPattern.cs: # 8| 0: [ParameterAccess] access to parameter c # 8| 1: [NotPatternExpr] not ... # 8| 0: [CharLiteral,ConstantPatternExpr] a -# 9| 7: [Method] M2 +# 9| 8: [Method] M2 # 9| -1: [TypeMention] bool #-----| 2: (Parameters) # 9| 0: [Parameter] c @@ -1540,7 +1540,7 @@ UnaryPattern.cs: # 10| 0: [ParameterAccess] access to parameter c # 10| 1: [NotPatternExpr] not ... # 10| 0: [ConstantPatternExpr,NullLiteral] null -# 11| 8: [Method] M3 +# 11| 9: [Method] M3 # 11| -1: [TypeMention] bool #-----| 2: (Parameters) # 11| 0: [Parameter] c @@ -1554,7 +1554,7 @@ UnaryPattern.cs: # 12| 0: [TypeMention] UnaryPattern # 12| 3: [PropertyPatternExpr] { ... } # 12| 0: [ConstantPatternExpr,IntLiteral,LabeledPatternExpr] 1 -# 14| 9: [Method] M4 +# 14| 10: [Method] M4 # 14| -1: [TypeMention] string #-----| 2: (Parameters) # 14| 0: [Parameter] i diff --git a/csharp/ql/test/library-tests/csharp9/nativeInt.expected b/csharp/ql/test/library-tests/csharp9/nativeInt.expected index 2c63241e1fe5..7809e4f94871 100644 --- a/csharp/ql/test/library-tests/csharp9/nativeInt.expected +++ b/csharp/ql/test/library-tests/csharp9/nativeInt.expected @@ -1,4 +1,6 @@ | NativeInt.cs:3:14:3:22 | call to constructor Object | Object | +| NativeInt.cs:3:14:3:22 | call to method | Void | +| NativeInt.cs:3:14:3:22 | this access | NativeInt | | NativeInt.cs:7:14:7:14 | access to local variable x | IntPtr | | NativeInt.cs:7:14:7:18 | IntPtr x = ... | IntPtr | | NativeInt.cs:7:18:7:18 | (...) ... | IntPtr | diff --git a/csharp/ql/test/library-tests/csharp9/record.expected b/csharp/ql/test/library-tests/csharp9/record.expected index 9b6b5c005710..b34815c4f1a1 100644 --- a/csharp/ql/test/library-tests/csharp9/record.expected +++ b/csharp/ql/test/library-tests/csharp9/record.expected @@ -12,6 +12,7 @@ records members | Record.cs:4:1:10:1 | Person | Person.!=(Person, Person) | Record.cs:4:15:4:20 | | Record.cs:4:1:10:1 | Person | Person.$() | no location | +| Record.cs:4:1:10:1 | Person | Person.() | no location | | Record.cs:4:1:10:1 | Person | Person.==(Person, Person) | Record.cs:4:15:4:20 | | Record.cs:4:1:10:1 | Person | Person.EqualityContract | Record.cs:4:15:4:20 | | Record.cs:4:1:10:1 | Person | Person.Equals(Person) | no location | @@ -30,6 +31,7 @@ members | Record.cs:4:1:10:1 | Person | System.Object.ReferenceEquals(object, object) | no location | | Record.cs:4:1:10:1 | Person | System.Object.~Object() | no location | | Record.cs:12:1:18:1 | Teacher | Person.!=(Person, Person) | Record.cs:4:15:4:20 | +| Record.cs:12:1:18:1 | Teacher | Person.() | no location | | Record.cs:12:1:18:1 | Teacher | Person.==(Person, Person) | Record.cs:4:15:4:20 | | Record.cs:12:1:18:1 | Teacher | Person.FirstName | Record.cs:7:19:7:27 | | Record.cs:12:1:18:1 | Teacher | Person.LastName | Record.cs:6:19:6:26 | @@ -43,6 +45,7 @@ members | Record.cs:12:1:18:1 | Teacher | System.Object.~Object() | no location | | Record.cs:12:1:18:1 | Teacher | Teacher.!=(Teacher, Teacher) | Record.cs:12:15:12:21 | | Record.cs:12:1:18:1 | Teacher | Teacher.$() | no location | +| Record.cs:12:1:18:1 | Teacher | Teacher.() | no location | | Record.cs:12:1:18:1 | Teacher | Teacher.==(Teacher, Teacher) | Record.cs:12:15:12:21 | | Record.cs:12:1:18:1 | Teacher | Teacher.EqualityContract | Record.cs:12:15:12:21 | | Record.cs:12:1:18:1 | Teacher | Teacher.Equals(Person) | no location | @@ -55,6 +58,7 @@ members | Record.cs:12:1:18:1 | Teacher | Teacher.Teacher(string, string, string) | Record.cs:16:12:16:18 | | Record.cs:12:1:18:1 | Teacher | Teacher.ToString() | no location | | Record.cs:20:1:25:1 | Student | Person.!=(Person, Person) | Record.cs:4:15:4:20 | +| Record.cs:20:1:25:1 | Student | Person.() | no location | | Record.cs:20:1:25:1 | Student | Person.==(Person, Person) | Record.cs:4:15:4:20 | | Record.cs:20:1:25:1 | Student | Person.FirstName | Record.cs:7:19:7:27 | | Record.cs:20:1:25:1 | Student | Person.LastName | Record.cs:6:19:6:26 | @@ -62,6 +66,7 @@ members | Record.cs:20:1:25:1 | Student | Person.Person(string, string) | Record.cs:9:12:9:17 | | Record.cs:20:1:25:1 | Student | Student.!=(Student, Student) | Record.cs:20:22:20:28 | | Record.cs:20:1:25:1 | Student | Student.$() | no location | +| Record.cs:20:1:25:1 | Student | Student.() | no location | | Record.cs:20:1:25:1 | Student | Student.==(Student, Student) | Record.cs:20:22:20:28 | | Record.cs:20:1:25:1 | Student | Student.EqualityContract | Record.cs:20:22:20:28 | | Record.cs:20:1:25:1 | Student | Student.Equals(Person) | no location | @@ -81,6 +86,7 @@ members | Record.cs:20:1:25:1 | Student | System.Object.~Object() | no location | | Record.cs:27:1:27:57 | Person1 | Person1.!=(Person1, Person1) | Record.cs:27:15:27:21 | | Record.cs:27:1:27:57 | Person1 | Person1.$() | no location | +| Record.cs:27:1:27:57 | Person1 | Person1.() | no location | | Record.cs:27:1:27:57 | Person1 | Person1.==(Person1, Person1) | Record.cs:27:15:27:21 | | Record.cs:27:1:27:57 | Person1 | Person1.Deconstruct(out string, out string) | no location | | Record.cs:27:1:27:57 | Person1 | Person1.EqualityContract | Record.cs:27:15:27:21 | @@ -100,6 +106,7 @@ members | Record.cs:27:1:27:57 | Person1 | System.Object.ReferenceEquals(object, object) | no location | | Record.cs:27:1:27:57 | Person1 | System.Object.~Object() | no location | | Record.cs:29:1:30:35 | Teacher1 | Person1.!=(Person1, Person1) | Record.cs:27:15:27:21 | +| Record.cs:29:1:30:35 | Teacher1 | Person1.() | no location | | Record.cs:29:1:30:35 | Teacher1 | Person1.==(Person1, Person1) | Record.cs:27:15:27:21 | | Record.cs:29:1:30:35 | Teacher1 | Person1.Deconstruct(out string, out string) | no location | | Record.cs:29:1:30:35 | Teacher1 | Person1.FirstName | Record.cs:27:30:27:38 | @@ -114,6 +121,7 @@ members | Record.cs:29:1:30:35 | Teacher1 | System.Object.~Object() | no location | | Record.cs:29:1:30:35 | Teacher1 | Teacher1.!=(Teacher1, Teacher1) | Record.cs:29:15:29:22 | | Record.cs:29:1:30:35 | Teacher1 | Teacher1.$() | no location | +| Record.cs:29:1:30:35 | Teacher1 | Teacher1.() | no location | | Record.cs:29:1:30:35 | Teacher1 | Teacher1.==(Teacher1, Teacher1) | Record.cs:29:15:29:22 | | Record.cs:29:1:30:35 | Teacher1 | Teacher1.Deconstruct(out string, out string, out string) | no location | | Record.cs:29:1:30:35 | Teacher1 | Teacher1.EqualityContract | Record.cs:29:15:29:22 | @@ -127,6 +135,7 @@ members | Record.cs:29:1:30:35 | Teacher1 | Teacher1.Teacher1(string, string, string) | Record.cs:29:15:29:22 | | Record.cs:29:1:30:35 | Teacher1 | Teacher1.ToString() | no location | | Record.cs:32:1:33:35 | Student1 | Person1.!=(Person1, Person1) | Record.cs:27:15:27:21 | +| Record.cs:32:1:33:35 | Student1 | Person1.() | no location | | Record.cs:32:1:33:35 | Student1 | Person1.==(Person1, Person1) | Record.cs:27:15:27:21 | | Record.cs:32:1:33:35 | Student1 | Person1.Deconstruct(out string, out string) | no location | | Record.cs:32:1:33:35 | Student1 | Person1.FirstName | Record.cs:27:30:27:38 | @@ -135,6 +144,7 @@ members | Record.cs:32:1:33:35 | Student1 | Person1.Person1(string, string) | Record.cs:27:15:27:21 | | Record.cs:32:1:33:35 | Student1 | Student1.!=(Student1, Student1) | Record.cs:32:22:32:29 | | Record.cs:32:1:33:35 | Student1 | Student1.$() | no location | +| Record.cs:32:1:33:35 | Student1 | Student1.() | no location | | Record.cs:32:1:33:35 | Student1 | Student1.==(Student1, Student1) | Record.cs:32:22:32:29 | | Record.cs:32:1:33:35 | Student1 | Student1.Deconstruct(out string, out string, out int) | no location | | Record.cs:32:1:33:35 | Student1 | Student1.EqualityContract | Record.cs:32:22:32:29 | @@ -155,6 +165,7 @@ members | Record.cs:32:1:33:35 | Student1 | System.Object.~Object() | no location | | Record.cs:35:1:39:1 | Pet | Pet.!=(Pet, Pet) | Record.cs:35:15:35:17 | | Record.cs:35:1:39:1 | Pet | Pet.$() | no location | +| Record.cs:35:1:39:1 | Pet | Pet.() | no location | | Record.cs:35:1:39:1 | Pet | Pet.==(Pet, Pet) | Record.cs:35:15:35:17 | | Record.cs:35:1:39:1 | Pet | Pet.Deconstruct(out string) | no location | | Record.cs:35:1:39:1 | Pet | Pet.EqualityContract | Record.cs:35:15:35:17 | @@ -175,6 +186,7 @@ members | Record.cs:35:1:39:1 | Pet | System.Object.~Object() | no location | | Record.cs:41:1:52:1 | Dog | Dog.!=(Dog, Dog) | Record.cs:41:15:41:17 | | Record.cs:41:1:52:1 | Dog | Dog.$() | no location | +| Record.cs:41:1:52:1 | Dog | Dog.() | no location | | Record.cs:41:1:52:1 | Dog | Dog.==(Dog, Dog) | Record.cs:41:15:41:17 | | Record.cs:41:1:52:1 | Dog | Dog.Deconstruct(out string) | no location | | Record.cs:41:1:52:1 | Dog | Dog.Dog(Dog) | no location | @@ -188,6 +200,7 @@ members | Record.cs:41:1:52:1 | Dog | Dog.ToString() | Record.cs:46:28:46:35 | | Record.cs:41:1:52:1 | Dog | Dog.WagTail() | Record.cs:43:17:43:23 | | Record.cs:41:1:52:1 | Dog | Pet.!=(Pet, Pet) | Record.cs:35:15:35:17 | +| Record.cs:41:1:52:1 | Dog | Pet.() | no location | | Record.cs:41:1:52:1 | Dog | Pet.==(Pet, Pet) | Record.cs:35:15:35:17 | | Record.cs:41:1:52:1 | Dog | Pet.Deconstruct(out string) | no location | | Record.cs:41:1:52:1 | Dog | Pet.Name | Record.cs:35:26:35:29 | @@ -202,6 +215,7 @@ members | Record.cs:41:1:52:1 | Dog | System.Object.~Object() | no location | | Record.cs:54:1:54:39 | R1 | R1.!=(R1, R1) | Record.cs:54:24:54:25 | | Record.cs:54:1:54:39 | R1 | R1.$() | no location | +| Record.cs:54:1:54:39 | R1 | R1.() | no location | | Record.cs:54:1:54:39 | R1 | R1.==(R1, R1) | Record.cs:54:24:54:25 | | Record.cs:54:1:54:39 | R1 | R1.A | Record.cs:54:34:54:34 | | Record.cs:54:1:54:39 | R1 | R1.Deconstruct(out string) | no location | @@ -220,6 +234,7 @@ members | Record.cs:54:1:54:39 | R1 | System.Object.ReferenceEquals(object, object) | no location | | Record.cs:54:1:54:39 | R1 | System.Object.~Object() | no location | | Record.cs:56:1:56:48 | R2 | R1.!=(R1, R1) | Record.cs:54:24:54:25 | +| Record.cs:56:1:56:48 | R2 | R1.() | no location | | Record.cs:56:1:56:48 | R2 | R1.==(R1, R1) | Record.cs:54:24:54:25 | | Record.cs:56:1:56:48 | R2 | R1.A | Record.cs:54:34:54:34 | | Record.cs:56:1:56:48 | R2 | R1.Deconstruct(out string) | no location | @@ -227,6 +242,7 @@ members | Record.cs:56:1:56:48 | R2 | R1.R1(string) | Record.cs:54:24:54:25 | | Record.cs:56:1:56:48 | R2 | R2.!=(R2, R2) | Record.cs:56:15:56:16 | | Record.cs:56:1:56:48 | R2 | R2.$() | no location | +| Record.cs:56:1:56:48 | R2 | R2.() | no location | | Record.cs:56:1:56:48 | R2 | R2.==(R2, R2) | Record.cs:56:15:56:16 | | Record.cs:56:1:56:48 | R2 | R2.B | Record.cs:56:35:56:35 | | Record.cs:56:1:56:48 | R2 | R2.Deconstruct(out string, out string) | no location | diff --git a/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.expected b/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.expected index 574ef53eae64..678dca279ff0 100644 --- a/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.expected @@ -1,27 +1,30 @@ models edges -| Constructors.cs:5:24:5:25 | [post] this access : C_no_ctor [field s1] : Object | Constructors.cs:9:27:9:41 | object creation of type C_no_ctor : C_no_ctor [field s1] : Object | provenance | | +| Constructors.cs:3:18:3:26 | [post] this access : C_no_ctor [field s1] : Object | Constructors.cs:9:27:9:41 | object creation of type C_no_ctor : C_no_ctor [field s1] : Object | provenance | | +| Constructors.cs:5:24:5:25 | [post] this access : C_no_ctor [field s1] : Object | Constructors.cs:3:18:3:26 | [post] this access : C_no_ctor [field s1] : Object | provenance | | | Constructors.cs:5:29:5:45 | call to method Source : Object | Constructors.cs:5:24:5:25 | [post] this access : C_no_ctor [field s1] : Object | provenance | | | Constructors.cs:9:23:9:23 | access to local variable c : C_no_ctor [field s1] : Object | Constructors.cs:10:13:10:13 | access to local variable c : C_no_ctor [field s1] : Object | provenance | | | Constructors.cs:9:27:9:41 | object creation of type C_no_ctor : C_no_ctor [field s1] : Object | Constructors.cs:9:23:9:23 | access to local variable c : C_no_ctor [field s1] : Object | provenance | | | Constructors.cs:10:13:10:13 | access to local variable c : C_no_ctor [field s1] : Object | Constructors.cs:13:21:13:22 | this : C_no_ctor [field s1] : Object | provenance | | | Constructors.cs:13:21:13:22 | this : C_no_ctor [field s1] : Object | Constructors.cs:15:18:15:19 | this access : C_no_ctor [field s1] : Object | provenance | | | Constructors.cs:15:18:15:19 | this access : C_no_ctor [field s1] : Object | Constructors.cs:15:18:15:19 | access to field s1 | provenance | | -| Constructors.cs:21:24:21:25 | [post] this access : C_with_ctor [field s1] : Object | Constructors.cs:29:16:29:26 | this [Return] : C_with_ctor [field s1] : Object | provenance | | +| Constructors.cs:21:24:21:25 | [post] this access : C_with_ctor [field s1] : Object | Constructors.cs:29:16:29:26 | [post] this access : C_with_ctor [field s1] : Object | provenance | | | Constructors.cs:21:29:21:45 | call to method Source : Object | Constructors.cs:21:24:21:25 | [post] this access : C_with_ctor [field s1] : Object | provenance | | | Constructors.cs:25:25:25:25 | access to local variable c : C_with_ctor [field s1] : Object | Constructors.cs:26:13:26:13 | access to local variable c : C_with_ctor [field s1] : Object | provenance | | | Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | Constructors.cs:25:25:25:25 | access to local variable c : C_with_ctor [field s1] : Object | provenance | | | Constructors.cs:26:13:26:13 | access to local variable c : C_with_ctor [field s1] : Object | Constructors.cs:31:21:31:22 | this : C_with_ctor [field s1] : Object | provenance | | +| Constructors.cs:29:16:29:26 | [post] this access : C_with_ctor [field s1] : Object | Constructors.cs:29:16:29:26 | this [Return] : C_with_ctor [field s1] : Object | provenance | | | Constructors.cs:29:16:29:26 | this [Return] : C_with_ctor [field s1] : Object | Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | provenance | | | Constructors.cs:31:21:31:22 | this : C_with_ctor [field s1] : Object | Constructors.cs:33:18:33:19 | this access : C_with_ctor [field s1] : Object | provenance | | | Constructors.cs:33:18:33:19 | this access : C_with_ctor [field s1] : Object | Constructors.cs:33:18:33:19 | access to field s1 | provenance | | | Constructors.cs:41:26:41:26 | o : Object | Constructors.cs:41:38:41:38 | access to parameter o : Object | provenance | | | Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | Constructors.cs:41:16:41:17 | this [Return] : C1 [field Obj] : Object | provenance | | | Constructors.cs:41:38:41:38 | access to parameter o : Object | Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | provenance | | -| Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:46:23:46:27 | this access : C2 [parameter o21param] : Object | provenance | | -| Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:46:31:46:38 | access to parameter o21param : Object | provenance | | +| Constructors.cs:44:18:44:19 | [post] this access : C2 [field Obj21] : Object | Constructors.cs:44:18:44:19 | this [Return] : C2 [field Obj21] : Object | provenance | | +| Constructors.cs:44:18:44:19 | this access : C2 [parameter o21param] : Object | Constructors.cs:44:18:44:19 | [post] this access : C2 [field Obj21] : Object | provenance | | +| Constructors.cs:44:18:44:19 | this access : C2 [parameter o21param] : Object | Constructors.cs:46:23:46:27 | this access : C2 [parameter o21param] : Object | provenance | | +| Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:44:18:44:19 | this access : C2 [parameter o21param] : Object | provenance | | | Constructors.cs:44:45:44:52 | o22param : Object | Constructors.cs:44:18:44:19 | this [Return] : C2 [parameter o22param] : Object | provenance | | -| Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | Constructors.cs:44:18:44:19 | this [Return] : C2 [field Obj21] : Object | provenance | | | Constructors.cs:46:23:46:27 | this access : C2 [parameter o21param] : Object | Constructors.cs:46:31:46:38 | access to parameter o21param : Object | provenance | | | Constructors.cs:46:31:46:38 | access to parameter o21param : Object | Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | provenance | | | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | access to parameter o22param : Object | provenance | | @@ -120,6 +123,7 @@ edges | Constructors.cs:144:14:144:15 | access to local variable r1 : R1 [property Obj1] : Object | Constructors.cs:144:14:144:20 | access to property Obj1 | provenance | | | Constructors.cs:145:14:145:15 | access to local variable r1 : R1 [property Obj2] : Object | Constructors.cs:145:14:145:20 | access to property Obj2 | provenance | | nodes +| Constructors.cs:3:18:3:26 | [post] this access : C_no_ctor [field s1] : Object | semmle.label | [post] this access : C_no_ctor [field s1] : Object | | Constructors.cs:5:24:5:25 | [post] this access : C_no_ctor [field s1] : Object | semmle.label | [post] this access : C_no_ctor [field s1] : Object | | Constructors.cs:5:29:5:45 | call to method Source : Object | semmle.label | call to method Source : Object | | Constructors.cs:9:23:9:23 | access to local variable c : C_no_ctor [field s1] : Object | semmle.label | access to local variable c : C_no_ctor [field s1] : Object | @@ -133,6 +137,7 @@ nodes | Constructors.cs:25:25:25:25 | access to local variable c : C_with_ctor [field s1] : Object | semmle.label | access to local variable c : C_with_ctor [field s1] : Object | | Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | semmle.label | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | | Constructors.cs:26:13:26:13 | access to local variable c : C_with_ctor [field s1] : Object | semmle.label | access to local variable c : C_with_ctor [field s1] : Object | +| Constructors.cs:29:16:29:26 | [post] this access : C_with_ctor [field s1] : Object | semmle.label | [post] this access : C_with_ctor [field s1] : Object | | Constructors.cs:29:16:29:26 | this [Return] : C_with_ctor [field s1] : Object | semmle.label | this [Return] : C_with_ctor [field s1] : Object | | Constructors.cs:31:21:31:22 | this : C_with_ctor [field s1] : Object | semmle.label | this : C_with_ctor [field s1] : Object | | Constructors.cs:33:18:33:19 | access to field s1 | semmle.label | access to field s1 | @@ -141,8 +146,10 @@ nodes | Constructors.cs:41:26:41:26 | o : Object | semmle.label | o : Object | | Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | semmle.label | [post] this access : C1 [field Obj] : Object | | Constructors.cs:41:38:41:38 | access to parameter o : Object | semmle.label | access to parameter o : Object | +| Constructors.cs:44:18:44:19 | [post] this access : C2 [field Obj21] : Object | semmle.label | [post] this access : C2 [field Obj21] : Object | | Constructors.cs:44:18:44:19 | this [Return] : C2 [field Obj21] : Object | semmle.label | this [Return] : C2 [field Obj21] : Object | | Constructors.cs:44:18:44:19 | this [Return] : C2 [parameter o22param] : Object | semmle.label | this [Return] : C2 [parameter o22param] : Object | +| Constructors.cs:44:18:44:19 | this access : C2 [parameter o21param] : Object | semmle.label | this access : C2 [parameter o21param] : Object | | Constructors.cs:44:28:44:35 | o21param : Object | semmle.label | o21param : Object | | Constructors.cs:44:45:44:52 | o22param : Object | semmle.label | o22param : Object | | Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | semmle.label | [post] this access : C2 [field Obj21] : Object | @@ -249,6 +256,7 @@ nodes | Constructors.cs:145:14:145:15 | access to local variable r1 : R1 [property Obj2] : Object | semmle.label | access to local variable r1 : R1 [property Obj2] : Object | | Constructors.cs:145:14:145:20 | access to property Obj2 | semmle.label | access to property Obj2 | subpaths +| Constructors.cs:44:18:44:19 | this access : C2 [parameter o21param] : Object | Constructors.cs:46:23:46:27 | this access : C2 [parameter o21param] : Object | Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | Constructors.cs:44:18:44:19 | [post] this access : C2 [field Obj21] : Object | | Constructors.cs:64:37:64:37 | access to parameter o : Object | Constructors.cs:57:54:57:55 | o2 : Object | Constructors.cs:59:13:59:14 | access to parameter o1 : Object | Constructors.cs:64:27:64:34 | access to parameter o22param : Object | | Constructors.cs:71:25:71:25 | access to local variable o : Object | Constructors.cs:41:26:41:26 | o : Object | Constructors.cs:41:16:41:17 | this [Return] : C1 [field Obj] : Object | Constructors.cs:71:18:71:26 | object creation of type C1 : C1 [field Obj] : Object | | Constructors.cs:79:25:79:27 | access to local variable o21 : Object | Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:44:18:44:19 | this [Return] : C2 [field Obj21] : Object | Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [field Obj21] : Object | diff --git a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected index ff9e6ab405e6..4e469e118870 100644 --- a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected @@ -332,18 +332,18 @@ edges | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | provenance | | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | provenance | | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | provenance | | -| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | provenance | | -| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | provenance | | +| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:16:13:16:13 | [post] this access : C [field s1] : Elem | provenance | | +| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:16:13:16:13 | [post] this access : C [field s1] : Elem | provenance | | | C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | provenance | | | C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | provenance | | -| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | provenance | | -| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | provenance | | +| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:16:13:16:13 | [post] this access : C [field s2] : Elem | provenance | | +| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:16:13:16:13 | [post] this access : C [field s2] : Elem | provenance | | | C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | provenance | | | C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | provenance | | | C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | provenance | | | C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | provenance | | -| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | provenance | | -| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | provenance | | +| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:16:13:16:13 | [post] this access : C [property s5] : Elem | provenance | | +| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:16:13:16:13 | [post] this access : C [property s5] : Elem | provenance | | | C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | provenance | | | C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | provenance | | | C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | provenance | | @@ -372,6 +372,12 @@ edges | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | provenance | | | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | provenance | | | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | provenance | | +| C.cs:16:13:16:13 | [post] this access : C [field s1] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | provenance | | +| C.cs:16:13:16:13 | [post] this access : C [field s1] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | provenance | | +| C.cs:16:13:16:13 | [post] this access : C [field s2] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | provenance | | +| C.cs:16:13:16:13 | [post] this access : C [field s2] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | provenance | | +| C.cs:16:13:16:13 | [post] this access : C [property s5] : Elem | C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | provenance | | +| C.cs:16:13:16:13 | [post] this access : C [property s5] : Elem | C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | provenance | | | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | provenance | | | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | provenance | | | C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | provenance | | @@ -1627,6 +1633,12 @@ nodes | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | semmle.label | access to local variable c : C [field s3] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | semmle.label | access to local variable c : C [property s5] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | semmle.label | access to local variable c : C [property s5] : Elem | +| C.cs:16:13:16:13 | [post] this access : C [field s1] : Elem | semmle.label | [post] this access : C [field s1] : Elem | +| C.cs:16:13:16:13 | [post] this access : C [field s1] : Elem | semmle.label | [post] this access : C [field s1] : Elem | +| C.cs:16:13:16:13 | [post] this access : C [field s2] : Elem | semmle.label | [post] this access : C [field s2] : Elem | +| C.cs:16:13:16:13 | [post] this access : C [field s2] : Elem | semmle.label | [post] this access : C [field s2] : Elem | +| C.cs:16:13:16:13 | [post] this access : C [property s5] : Elem | semmle.label | [post] this access : C [property s5] : Elem | +| C.cs:16:13:16:13 | [post] this access : C [property s5] : Elem | semmle.label | [post] this access : C [property s5] : Elem | | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | semmle.label | this [Return] : C [field s1] : Elem | | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | semmle.label | this [Return] : C [field s1] : Elem | | C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | semmle.label | this [Return] : C [field s2] : Elem | diff --git a/csharp/ql/test/library-tests/dataflow/implicittostring/PrintAst.expected b/csharp/ql/test/library-tests/dataflow/implicittostring/PrintAst.expected index cd7658f6f5e9..3500820e2505 100644 --- a/csharp/ql/test/library-tests/dataflow/implicittostring/PrintAst.expected +++ b/csharp/ql/test/library-tests/dataflow/implicittostring/PrintAst.expected @@ -1,19 +1,19 @@ implicitToString.cs: # 3| [Class] TestClass -# 5| 5: [Class] MyClass -# 5| 4: [InstanceConstructor,PrimaryConstructor] MyClass -# 7| 5: [Method] ToString +# 5| 6: [Class] MyClass +# 5| 5: [InstanceConstructor,PrimaryConstructor] MyClass +# 7| 6: [Method] ToString # 7| -1: [TypeMention] string # 8| 4: [BlockStmt] {...} # 9| 0: [ReturnStmt] return ...; # 9| 0: [StringLiteralUtf16] "tainted" -# 13| 6: [Method] Sink +# 13| 7: [Method] Sink # 13| -1: [TypeMention] Void #-----| 2: (Parameters) # 13| 0: [Parameter] o # 13| -1: [TypeMention] object # 13| 4: [BlockStmt] {...} -# 15| 7: [Method] M1 +# 15| 8: [Method] M1 # 15| -1: [TypeMention] Void # 16| 4: [BlockStmt] {...} # 17| 0: [LocalVariableDeclStmt] ... ...; @@ -33,7 +33,7 @@ implicitToString.cs: # 19| 2: [ExprStmt] ...; # 19| 0: [MethodCall] call to method Sink # 19| 0: [LocalVariableAccess] access to local variable x2 -# 22| 8: [Method] M2 +# 22| 9: [Method] M2 # 22| -1: [TypeMention] Void # 23| 4: [BlockStmt] {...} # 24| 0: [LocalVariableDeclStmt] ... ...; @@ -53,7 +53,7 @@ implicitToString.cs: # 26| 2: [ExprStmt] ...; # 26| 0: [MethodCall] call to method Sink # 26| 0: [LocalVariableAccess] access to local variable x2 -# 29| 9: [Method] M3 +# 29| 10: [Method] M3 # 29| -1: [TypeMention] Void # 30| 4: [BlockStmt] {...} # 31| 0: [LocalVariableDeclStmt] ... ...; @@ -74,7 +74,7 @@ implicitToString.cs: # 33| 2: [ExprStmt] ...; # 33| 0: [MethodCall] call to method Sink # 33| 0: [LocalVariableAccess] access to local variable x2 -# 36| 10: [Method] M4 +# 36| 11: [Method] M4 # 36| -1: [TypeMention] Void # 37| 4: [BlockStmt] {...} # 38| 0: [LocalVariableDeclStmt] ... ...; diff --git a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 6bf236135a20..16e0aa842c57 100644 --- a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -1,3 +1,4 @@ +| Capture.cs:3:14:3:20 | this | Capture.cs:3:14:3:20 | this access | | Capture.cs:5:17:5:17 | this | Capture.cs:13:9:13:14 | this access | | Capture.cs:7:17:7:17 | 0 | Capture.cs:7:13:7:13 | access to local variable i | | Capture.cs:13:9:13:14 | this access | Capture.cs:23:9:23:14 | this access | @@ -10,6 +11,11 @@ | Capture.cs:51:9:51:15 | this access | Capture.cs:63:9:63:15 | this access | | Capture.cs:58:21:58:21 | 1 | Capture.cs:58:17:58:17 | access to local variable i | | Capture.cs:61:17:61:17 | 1 | Capture.cs:61:13:61:13 | access to local variable i | +| LocalDataFlow.cs:13:25:13:35 | this | LocalDataFlow.cs:13:25:13:35 | this access | +| LocalDataFlow.cs:29:18:29:24 | this | LocalDataFlow.cs:29:18:29:24 | this access | +| LocalDataFlow.cs:37:25:37:45 | this | LocalDataFlow.cs:37:25:37:45 | this access | +| LocalDataFlow.cs:38:25:38:43 | this | LocalDataFlow.cs:38:25:38:43 | this access | +| LocalDataFlow.cs:46:14:46:26 | this | LocalDataFlow.cs:46:14:46:26 | this access | | LocalDataFlow.cs:48:24:48:24 | SSA param(b) | LocalDataFlow.cs:84:21:84:21 | access to parameter b | | LocalDataFlow.cs:48:24:48:24 | b | LocalDataFlow.cs:48:24:48:24 | SSA param(b) | | LocalDataFlow.cs:51:13:51:17 | access to local variable sink0 | LocalDataFlow.cs:51:13:51:34 | SSA def(sink0) | @@ -482,6 +488,7 @@ | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | LocalDataFlow.cs:314:13:314:18 | access to local variable sink74 | | LocalDataFlow.cs:314:31:314:38 | access to local variable nonSink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | +| LocalDataFlow.cs:328:18:328:29 | this | LocalDataFlow.cs:328:18:328:29 | this access | | LocalDataFlow.cs:334:28:334:30 | SSA entry def(this.anInt) | LocalDataFlow.cs:334:41:334:45 | access to field anInt | | LocalDataFlow.cs:334:28:334:30 | this | LocalDataFlow.cs:334:41:334:45 | this access | | LocalDataFlow.cs:334:50:334:52 | SSA param(value) | LocalDataFlow.cs:334:64:334:68 | access to parameter value | @@ -519,6 +526,7 @@ | LocalDataFlow.cs:381:13:381:13 | access to local variable x | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:17:381:29 | "not tainted" | LocalDataFlow.cs:381:13:381:13 | access to local variable x | +| SSA.cs:3:14:3:16 | this | SSA.cs:3:14:3:16 | this access | | SSA.cs:5:17:5:17 | SSA entry def(this.S) | SSA.cs:67:9:67:14 | access to field S | | SSA.cs:5:17:5:17 | this | SSA.cs:67:9:67:12 | this access | | SSA.cs:5:26:5:32 | SSA param(tainted) | SSA.cs:8:24:8:30 | access to parameter tainted | @@ -917,6 +925,7 @@ | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | | SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| Splitting.cs:1:7:1:15 | this | Splitting.cs:1:7:1:15 | this access | | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | | Splitting.cs:3:28:3:34 | SSA param(tainted) | Splitting.cs:5:17:5:23 | access to parameter tainted | @@ -1001,6 +1010,7 @@ | Splitting.cs:57:17:57:17 | access to local variable y | Splitting.cs:58:27:58:27 | access to local variable y | | Splitting.cs:58:22:58:22 | SSA def(s) | Splitting.cs:59:19:59:19 | access to local variable s | | Splitting.cs:58:22:58:22 | String s | Splitting.cs:58:22:58:22 | SSA def(s) | +| UseUseExplosion.cs:1:7:1:7 | this | UseUseExplosion.cs:1:7:1:7 | this access | | UseUseExplosion.cs:21:10:21:10 | SSA entry def(this.Prop) | UseUseExplosion.cs:24:13:24:16 | access to property Prop | | UseUseExplosion.cs:21:10:21:10 | this | UseUseExplosion.cs:24:13:24:16 | this access | | UseUseExplosion.cs:23:13:23:13 | access to local variable x | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | diff --git a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected index 1e9e48f5456d..2dc753a18890 100644 --- a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected @@ -1,3 +1,4 @@ +| Capture.cs:3:14:3:20 | this | Capture.cs:3:14:3:20 | this access | | Capture.cs:5:17:5:17 | this | Capture.cs:13:9:13:14 | this access | | Capture.cs:7:17:7:17 | 0 | Capture.cs:7:13:7:13 | access to local variable i | | Capture.cs:13:9:13:14 | this access | Capture.cs:23:9:23:14 | this access | @@ -10,6 +11,11 @@ | Capture.cs:51:9:51:15 | this access | Capture.cs:63:9:63:15 | this access | | Capture.cs:58:21:58:21 | 1 | Capture.cs:58:17:58:17 | access to local variable i | | Capture.cs:61:17:61:17 | 1 | Capture.cs:61:13:61:13 | access to local variable i | +| LocalDataFlow.cs:13:25:13:35 | this | LocalDataFlow.cs:13:25:13:35 | this access | +| LocalDataFlow.cs:29:18:29:24 | this | LocalDataFlow.cs:29:18:29:24 | this access | +| LocalDataFlow.cs:37:25:37:45 | this | LocalDataFlow.cs:37:25:37:45 | this access | +| LocalDataFlow.cs:38:25:38:43 | this | LocalDataFlow.cs:38:25:38:43 | this access | +| LocalDataFlow.cs:46:14:46:26 | this | LocalDataFlow.cs:46:14:46:26 | this access | | LocalDataFlow.cs:48:24:48:24 | SSA param(b) | LocalDataFlow.cs:84:21:84:21 | access to parameter b | | LocalDataFlow.cs:48:24:48:24 | b | LocalDataFlow.cs:48:24:48:24 | SSA param(b) | | LocalDataFlow.cs:51:13:51:17 | access to local variable sink0 | LocalDataFlow.cs:51:13:51:34 | SSA def(sink0) | @@ -593,6 +599,7 @@ | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | LocalDataFlow.cs:314:13:314:18 | access to local variable sink74 | | LocalDataFlow.cs:314:31:314:38 | access to local variable nonSink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | +| LocalDataFlow.cs:328:18:328:29 | this | LocalDataFlow.cs:328:18:328:29 | this access | | LocalDataFlow.cs:334:28:334:30 | SSA entry def(this.anInt) | LocalDataFlow.cs:334:41:334:45 | access to field anInt | | LocalDataFlow.cs:334:28:334:30 | this | LocalDataFlow.cs:334:41:334:45 | this access | | LocalDataFlow.cs:334:50:334:52 | SSA param(value) | LocalDataFlow.cs:334:64:334:68 | access to parameter value | @@ -631,6 +638,7 @@ | LocalDataFlow.cs:381:13:381:13 | access to local variable x | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:17:381:29 | "not tainted" | LocalDataFlow.cs:381:13:381:13 | access to local variable x | +| SSA.cs:3:14:3:16 | this | SSA.cs:3:14:3:16 | this access | | SSA.cs:5:17:5:17 | SSA entry def(this.S) | SSA.cs:67:9:67:14 | access to field S | | SSA.cs:5:17:5:17 | this | SSA.cs:67:9:67:12 | this access | | SSA.cs:5:26:5:32 | SSA param(tainted) | SSA.cs:8:24:8:30 | access to parameter tainted | @@ -1047,6 +1055,7 @@ | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | | SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| Splitting.cs:1:7:1:15 | this | Splitting.cs:1:7:1:15 | this access | | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | | Splitting.cs:3:28:3:34 | SSA param(tainted) | Splitting.cs:5:17:5:23 | access to parameter tainted | @@ -1143,6 +1152,7 @@ | Splitting.cs:58:22:58:22 | SSA def(s) | Splitting.cs:59:19:59:19 | access to local variable s | | Splitting.cs:58:22:58:22 | String s | Splitting.cs:58:22:58:22 | SSA def(s) | | Splitting.cs:58:27:58:27 | access to local variable y | Splitting.cs:58:22:58:22 | SSA def(s) | +| UseUseExplosion.cs:1:7:1:7 | this | UseUseExplosion.cs:1:7:1:7 | this access | | UseUseExplosion.cs:21:10:21:10 | SSA entry def(this.Prop) | UseUseExplosion.cs:24:13:24:16 | access to property Prop | | UseUseExplosion.cs:21:10:21:10 | this | UseUseExplosion.cs:24:13:24:16 | this access | | UseUseExplosion.cs:23:13:23:13 | access to local variable x | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | diff --git a/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected b/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected index 73b0a757b5a3..1d74f7962275 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected @@ -1,3 +1,4 @@ +| Tuples.cs:3:7:3:12 | this | Tuples.cs:3:7:3:12 | this access | | Tuples.cs:7:13:7:14 | access to local variable o1 | Tuples.cs:7:13:7:34 | SSA def(o1) | | Tuples.cs:7:13:7:34 | SSA def(o1) | Tuples.cs:10:21:10:22 | access to local variable o1 | | Tuples.cs:7:18:7:34 | call to method Source | Tuples.cs:7:13:7:14 | access to local variable o1 | @@ -168,7 +169,11 @@ | Tuples.cs:87:30:87:30 | SSA def(r) | Tuples.cs:90:18:90:18 | access to local variable r | | Tuples.cs:87:30:87:30 | String r | Tuples.cs:87:30:87:30 | SSA def(r) | | Tuples.cs:91:18:91:18 | access to local variable q | Tuples.cs:91:18:91:18 | (...) ... | +| Tuples.cs:95:12:95:13 | [post] this access | Tuples.cs:95:29:95:29 | this | +| Tuples.cs:95:12:95:13 | this | Tuples.cs:95:12:95:13 | this access | +| Tuples.cs:95:12:95:13 | this | Tuples.cs:95:12:95:13 | this access | | Tuples.cs:95:12:95:13 | this | Tuples.cs:95:22:95:22 | this | +| Tuples.cs:95:12:95:13 | this access | Tuples.cs:95:29:95:29 | this | | Tuples.cs:95:22:95:22 | [post] this | Tuples.cs:95:29:95:29 | this | | Tuples.cs:95:22:95:22 | this | Tuples.cs:95:29:95:29 | this | | Tuples.cs:99:13:99:13 | access to local variable o | Tuples.cs:99:13:99:33 | SSA def(o) | @@ -225,3 +230,4 @@ | Tuples.cs:133:24:133:29 | (..., ...) | Tuples.cs:133:9:133:20 | (..., ...) | | Tuples.cs:133:25:133:25 | 1 | Tuples.cs:133:9:133:29 | ... = ... | | Tuples.cs:133:28:133:28 | access to local variable o | Tuples.cs:133:18:133:19 | access to local variable y4 | +| Tuples.cs:144:18:144:31 | this | Tuples.cs:144:18:144:31 | this access | diff --git a/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected b/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected index 7cbddb9d3d57..11e14eeb6c59 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected @@ -1,6 +1,6 @@ Tuples.cs: # 3| [Class] Tuples -# 5| 5: [Method] M1 +# 5| 6: [Method] M1 # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} # 7| 0: [LocalVariableDeclStmt] ... ...; @@ -99,7 +99,7 @@ Tuples.cs: # 29| 0: [FieldAccess] access to field Item2 # 29| -1: [FieldAccess] access to field Item2 # 29| -1: [LocalVariableAccess] access to local variable x -# 32| 6: [Method] M2 +# 32| 7: [Method] M2 # 32| -1: [TypeMention] Void # 33| 4: [BlockStmt] {...} # 34| 0: [LocalVariableDeclStmt] ... ...; @@ -144,7 +144,7 @@ Tuples.cs: # 40| 0: [MethodCall] call to method Sink # 40| 0: [FieldAccess] access to field Item10 # 40| -1: [LocalVariableAccess] access to local variable x -# 43| 7: [Method] M3 +# 43| 8: [Method] M3 # 43| -1: [TypeMention] Void # 44| 4: [BlockStmt] {...} # 45| 0: [LocalVariableDeclStmt] ... ...; @@ -201,7 +201,7 @@ Tuples.cs: # 52| 0: [CastExpr] (...) ... # 52| 1: [FieldAccess] access to field Item2 # 52| -1: [LocalVariableAccess] access to local variable y -# 55| 8: [Method] M4 +# 55| 9: [Method] M4 # 55| -1: [TypeMention] Void #-----| 2: (Parameters) # 55| 0: [Parameter] s @@ -352,34 +352,34 @@ Tuples.cs: # 91| 0: [MethodCall] call to method Sink # 91| 0: [CastExpr] (...) ... # 91| 1: [LocalVariableAccess] access to local variable q -# 95| 9: [RecordClass] R1 -# 95| 12: [NEOperator] != +# 95| 10: [RecordClass] R1 +# 95| 13: [NEOperator] != #-----| 2: (Parameters) # 95| 0: [Parameter] left # 95| 1: [Parameter] right -# 95| 13: [EQOperator] == +# 95| 14: [EQOperator] == #-----| 2: (Parameters) # 95| 0: [Parameter] left # 95| 1: [Parameter] right -# 95| 14: [Property] EqualityContract +# 95| 15: [Property] EqualityContract # 95| 3: [Getter] get_EqualityContract -# 95| 15: [InstanceConstructor,PrimaryConstructor] R1 +# 95| 16: [InstanceConstructor,PrimaryConstructor] R1 #-----| 2: (Parameters) # 95| 0: [Parameter] i # 95| -1: [TypeMention] string # 95| 1: [Parameter] j # 95| -1: [TypeMention] int -# 95| 16: [Property] i +# 95| 17: [Property] i # 95| 3: [Getter] get_i # 95| 4: [Setter] set_i #-----| 2: (Parameters) # 95| 0: [Parameter] value -# 95| 17: [Property] j +# 95| 18: [Property] j # 95| 3: [Getter] get_j # 95| 4: [Setter] set_j #-----| 2: (Parameters) # 95| 0: [Parameter] value -# 97| 10: [Method] M5 +# 97| 11: [Method] M5 # 97| -1: [TypeMention] Void # 98| 4: [BlockStmt] {...} # 99| 0: [LocalVariableDeclStmt] ... ...; @@ -428,7 +428,7 @@ Tuples.cs: # 111| 0: [CastExpr] (...) ... # 111| 1: [LocalVariableAccess] access to local variable y # 112| 3: [BreakStmt] break; -# 116| 11: [Method] M6 +# 116| 12: [Method] M6 # 116| -1: [TypeMention] Void # 117| 4: [BlockStmt] {...} # 118| 0: [LocalVariableDeclStmt] ... ...; @@ -504,13 +504,13 @@ Tuples.cs: # 134| 12: [ExprStmt] ...; # 134| 0: [MethodCall] call to method Sink # 134| 0: [LocalVariableAccess] access to local variable y4 -# 137| 12: [Method] Sink +# 137| 13: [Method] Sink # 137| -1: [TypeMention] Void #-----| 2: (Parameters) # 137| 0: [Parameter] o # 137| -1: [TypeMention] object # 137| 4: [BlockStmt] {...} -# 139| 15: [Method] Source`1 +# 139| 16: [Method] Source`1 # 139| -1: [TypeMention] T #-----| 1: (Type parameters) # 139| 0: [TypeParameter] T diff --git a/csharp/ql/test/library-tests/definitions/PrintAst.expected b/csharp/ql/test/library-tests/definitions/PrintAst.expected index 9b5606d30f59..28196c75a857 100644 --- a/csharp/ql/test/library-tests/definitions/PrintAst.expected +++ b/csharp/ql/test/library-tests/definitions/PrintAst.expected @@ -17,15 +17,15 @@ definitions.cs: # 15| 1: [IntLiteral] 2 # 15| 7: [Field] e3 # 18| 3: [Class] C1 -# 20| 4: [InstanceConstructor] C1 +# 20| 5: [InstanceConstructor] C1 #-----| 2: (Parameters) # 20| 0: [Parameter] args # 20| -1: [TypeMention] Int32[] # 20| 1: [TypeMention] int # 20| 4: [BlockStmt] {...} -# 22| 5: [Field] field1 +# 22| 6: [Field] field1 # 22| -1: [TypeMention] int -# 24| 6: [Property] property1 +# 24| 7: [Property] property1 # 24| -1: [TypeMention] int # 26| 3: [Getter] get_property1 # 26| 4: [BlockStmt] {...} @@ -39,7 +39,7 @@ definitions.cs: # 27| 0: [AssignExpr] ... = ... # 27| 0: [FieldAccess] access to field field1 # 27| 1: [ParameterAccess] access to parameter value -# 30| 7: [Method] f1 +# 30| 8: [Method] f1 # 30| -1: [TypeMention] Void #-----| 2: (Parameters) # 30| 0: [Parameter] args @@ -157,7 +157,7 @@ definitions.cs: # 67| 0: [LocalVariableAccess] access to local variable m1 # 67| 1: [ImplicitDelegateCreation] delegate creation of type Action # 67| 0: [MethodAccess] access to method GenericFn -# 70| 8: [Method] VariableTypeUse +# 70| 9: [Method] VariableTypeUse # 70| -1: [TypeMention] Void #-----| 2: (Parameters) # 70| 0: [Parameter] c1 @@ -168,7 +168,7 @@ definitions.cs: # 72| -1: [TypeMention] C1 # 72| 0: [LocalVariableAccess] access to local variable c2 # 72| 1: [NullLiteral] null -# 75| 10: [Method] GenericFn`1 +# 75| 11: [Method] GenericFn`1 # 75| -1: [TypeMention] Void #-----| 1: (Type parameters) # 75| 0: [TypeParameter] T @@ -177,7 +177,7 @@ definitions.cs: # 75| -1: [TypeMention] T # 75| 4: [BlockStmt] {...} # 78| 4: [Struct] S1 -# 80| 5: [Method] M +# 80| 6: [Method] M # 80| -1: [TypeMention] S1 #-----| 2: (Parameters) # 80| 0: [Parameter] ss @@ -216,8 +216,8 @@ definitions.cs: # 93| 0: [ObjectCreation] object creation of type S1 # 93| 0: [TypeMention] S1 # 97| 5: [Class] A -# 99| 5: [DelegateType] EventHandler -# 101| 6: [Event] Click +# 99| 6: [DelegateType] EventHandler +# 101| 7: [Event] Click # 101| -1: [TypeMention] EventHandler # 101| 3: [AddEventAccessor] add_Click #-----| 2: (Parameters) @@ -225,7 +225,7 @@ definitions.cs: # 101| 4: [RemoveEventAccessor] remove_Click #-----| 2: (Parameters) # 101| 0: [Parameter] value -# 103| 7: [Method] M +# 103| 8: [Method] M # 103| -1: [TypeMention] Void # 104| 4: [BlockStmt] {...} # 105| 0: [ExprStmt] ...; @@ -265,24 +265,24 @@ definitions.cs: # 121| 1: [TypeMention] I1 # 121| 2: [TypeMention] I2 # 121| 1: [TypeMention] A -# 123| 5: [Method] M +# 123| 6: [Method] M # 123| -1: [TypeMention] Void # 124| 4: [BlockStmt] {...} # 125| 0: [ExprStmt] ...; # 125| 0: [MethodCall] call to method M # 125| -1: [BaseAccess] base access -# 128| 6: [Method] M2`1 +# 128| 7: [Method] M2`1 # 128| -1: [TypeMention] I1 # 128| -1: [TypeMention] Void #-----| 1: (Type parameters) # 128| 0: [TypeParameter] T # 128| 4: [BlockStmt] {...} -# 130| 7: [Struct] S`1 +# 130| 8: [Struct] S`1 #-----| 1: (Type parameters) # 130| 0: [TypeParameter] T2 #-----| 3: (Base types) # 130| 1: [TypeMention] I3 -# 132| 8: [Method] Tuple +# 132| 9: [Method] Tuple # 132| -1: [TypeMention] (I1, B) # 132| 1: [TypeMention] I1 # 132| 2: [TypeMention] B @@ -290,7 +290,7 @@ definitions.cs: # 132| 4: [ThrowExpr] throw ... # 132| 0: [ObjectCreation] object creation of type Exception # 132| 0: [TypeMention] Exception -# 134| 9: [Indexer] Item +# 134| 10: [Indexer] Item # 134| -1: [TypeMention] B # 134| 1: [TypeMention] A #-----| 1: (Parameters) @@ -306,8 +306,8 @@ definitions.cs: # 134| 0: [TypeMention] B # 134| 1: [TypeMention] A # 137| 10: [Class] C -# 139| 5: [Enum] E -# 140| 6: [Method] Pointer +# 139| 6: [Enum] E +# 140| 7: [Method] Pointer # 140| -1: [TypeMention] E* # 140| 1: [TypeMention] E # 140| 4: [ThrowExpr] throw ... @@ -345,7 +345,7 @@ definitions.cs: # 151| 12: [Class] C4 #-----| 3: (Base types) # 151| 1: [TypeMention] I4 -# 153| 5: [Event] EH +# 153| 6: [Event] EH # 153| -1: [TypeMention] I4 # 153| 3: [AddEventAccessor] add_EH #-----| 2: (Parameters) @@ -355,20 +355,20 @@ definitions.cs: #-----| 2: (Parameters) # 153| 0: [Parameter] value # 153| 4: [BlockStmt] {...} -# 154| 6: [Method] M +# 154| 7: [Method] M # 154| -1: [TypeMention] I4 # 154| -1: [TypeMention] A # 154| 4: [ThrowExpr] throw ... # 154| 0: [ObjectCreation] object creation of type Exception # 154| 0: [TypeMention] Exception -# 155| 7: [Property] P +# 155| 8: [Property] P # 155| -1: [TypeMention] I4 # 155| -1: [TypeMention] I3 # 155| 3: [Getter] get_P # 155| 4: [ThrowExpr] throw ... # 155| 0: [ObjectCreation] object creation of type Exception # 155| 0: [TypeMention] Exception -# 156| 8: [Indexer] Item +# 156| 9: [Indexer] Item # 156| -1: [TypeMention] I4 # 156| -1: [TypeMention] S1 #-----| 1: (Parameters) @@ -385,10 +385,10 @@ definitions.cs: # 156| 0: [TypeMention] S1 # 156| 1: [ObjectCreation] object creation of type S1 # 156| 0: [TypeMention] S1 -# 158| 10: [Class] Nested`1 +# 158| 11: [Class] Nested`1 #-----| 1: (Type parameters) # 158| 0: [TypeParameter] T -# 160| 5: [Method] Create +# 160| 6: [Method] Create # 160| -1: [TypeMention] Nested # 160| 1: [TypeMention] T # 160| 4: [BlockStmt] {...} @@ -397,7 +397,7 @@ definitions.cs: # 160| 0: [TypeMention] Nested # 160| 1: [TypeMention] T # 164| 13: [Class] C5 -# 166| 5: [Field] f +# 166| 6: [Field] f # 166| -1: [TypeMention] Nested # 166| 1: [TypeMention] C4 # 166| 2: [TypeMention] I4 @@ -407,9 +407,9 @@ definitions.cs: # 166| 1: [TypeMention] I4 # 166| -1: [TypeAccess] access to type C4 # 166| 0: [TypeMention] C4 -# 167| 6: [Field] c1 +# 167| 7: [Field] c1 # 167| -1: [TypeMention] C1 -# 169| 7: [Method] M +# 169| 8: [Method] M # 169| -1: [TypeMention] Void # 170| 4: [BlockStmt] {...} # 171| 0: [LocalVariableDeclStmt] ... ...; @@ -450,7 +450,7 @@ definitions.cs: # 175| 1: [TypeMention] C4 # 175| 2: [TypeMention] I4 # 179| 14: [Class] C6 -# 181| 5: [ExplicitConversionOperator] explicit conversion +# 181| 6: [ExplicitConversionOperator] explicit conversion # 181| -1: [TypeMention] C5 #-----| 2: (Parameters) # 181| 0: [Parameter] c @@ -461,14 +461,14 @@ definitions.cs: # 182| 4: [BlockStmt] {...} # 183| 0: [ReturnStmt] return ...; # 183| 0: [NullLiteral] null -# 186| 6: [Method] M +# 186| 7: [Method] M # 186| -1: [TypeMention] C5 # 187| 4: [BlockStmt] {...} # 188| 0: [ReturnStmt] return ...; # 188| 0: [OperatorCall] call to operator explicit conversion # 188| -1: [TypeMention] C5 # 188| 0: [ThisAccess] this access -# 191| 7: [AddOperator] + +# 191| 8: [AddOperator] + # 191| -1: [TypeMention] C6 #-----| 2: (Parameters) # 191| 0: [Parameter] x @@ -480,10 +480,10 @@ definitions.cs: #-----| 3: (Base types) # 194| 0: [TypeMention] Attribute # 196| 16: [Class] C7 -# 198| 5: [Method] M +# 198| 6: [Method] M # 198| -1: [TypeMention] Void # 198| 4: [BlockStmt] {...} -# 200| 6: [Method] M2 +# 200| 7: [Method] M2 # 200| -1: [TypeMention] Void # 201| 4: [BlockStmt] {...} # 202| 0: [ExprStmt] ...; @@ -491,7 +491,7 @@ definitions.cs: # 202| -1: [TypeAccess] access to type C7 # 202| 0: [TypeMention] C7 # 206| 17: [Class] C8 -# 208| 5: [Method] F +# 208| 6: [Method] F # 208| -1: [TypeMention] Void # 209| 4: [BlockStmt] {...} # 210| 0: [LocalVariableDeclStmt] ... ...; diff --git a/csharp/ql/test/library-tests/delegates/PrintAst.expected b/csharp/ql/test/library-tests/delegates/PrintAst.expected index fee97ca9daf4..86a5f9c241e9 100644 --- a/csharp/ql/test/library-tests/delegates/PrintAst.expected +++ b/csharp/ql/test/library-tests/delegates/PrintAst.expected @@ -16,7 +16,7 @@ delegates.cs: # 9| 1: [Parameter] d # 9| -1: [TypeMention] double # 11| 3: [Class] A -# 14| 5: [Method] M1 +# 14| 6: [Method] M1 # 14| -1: [TypeMention] int #-----| 2: (Parameters) # 14| 0: [Parameter] a @@ -33,13 +33,13 @@ delegates.cs: # 14| 1: [ParameterAccess] access to parameter a # 14| 1: [ParameterAccess] access to parameter b # 18| 4: [Class] B -# 21| 5: [DelegateType] D2 +# 21| 6: [DelegateType] D2 #-----| 2: (Parameters) # 21| 0: [Parameter] c # 21| -1: [TypeMention] int # 21| 1: [Parameter] d # 21| -1: [TypeMention] double -# 23| 6: [Method] M1 +# 23| 7: [Method] M1 # 23| -1: [TypeMention] int #-----| 2: (Parameters) # 23| 0: [Parameter] f @@ -54,7 +54,7 @@ delegates.cs: # 23| 0: [TypeAccess] access to type Int32 # 23| 0: [TypeMention] int # 23| 1: [ParameterAccess] access to parameter g -# 25| 7: [Method] M2 +# 25| 8: [Method] M2 # 25| -1: [TypeMention] Void #-----| 2: (Parameters) # 25| 0: [Parameter] k @@ -62,7 +62,7 @@ delegates.cs: # 25| 1: [Parameter] l # 25| -1: [TypeMention] double # 25| 4: [BlockStmt] {...} -# 27| 8: [Method] M3 +# 27| 9: [Method] M3 # 27| -1: [TypeMention] int #-----| 2: (Parameters) # 27| 0: [Parameter] g @@ -74,7 +74,7 @@ delegates.cs: # 27| 0: [ParameterAccess] access to parameter g # 27| 1: [UnaryPlusExpr] +... # 27| 0: [ParameterAccess] access to parameter g -# 29| 9: [Method] M4 +# 29| 10: [Method] M4 # 29| -1: [TypeMention] Void #-----| 2: (Parameters) # 29| 0: [Parameter] g @@ -87,7 +87,7 @@ delegates.cs: # 33| 0: [Parameter] value # 33| -1: [TypeMention] T # 35| 6: [Class] X -# 38| 5: [Method] F +# 38| 6: [Method] F # 38| -1: [TypeMention] bool #-----| 2: (Parameters) # 38| 0: [Parameter] i @@ -97,7 +97,7 @@ delegates.cs: # 38| 0: [LTExpr] ... < ... # 38| 0: [ParameterAccess] access to parameter i # 38| 1: [IntLiteral] 2 -# 40| 6: [Method] G +# 40| 7: [Method] G # 40| -1: [TypeMention] bool #-----| 2: (Parameters) # 40| 0: [Parameter] s @@ -110,26 +110,26 @@ delegates.cs: # 44| 0: [Parameter] x # 44| -1: [TypeMention] int # 46| 8: [Class] C -# 49| 5: [Method] M1 +# 49| 6: [Method] M1 # 49| -1: [TypeMention] Void #-----| 2: (Parameters) # 49| 0: [Parameter] i # 49| -1: [TypeMention] int # 49| 4: [BlockStmt] {...} -# 50| 6: [Method] M2 +# 50| 7: [Method] M2 # 50| -1: [TypeMention] Void #-----| 2: (Parameters) # 50| 0: [Parameter] i # 50| -1: [TypeMention] int # 50| 4: [BlockStmt] {...} -# 51| 7: [Method] M3 +# 51| 8: [Method] M3 # 51| -1: [TypeMention] Void #-----| 2: (Parameters) # 51| 0: [Parameter] i # 51| -1: [TypeMention] int # 51| 4: [BlockStmt] {...} # 55| 9: [Class] Test -# 58| 5: [Method] Main +# 58| 6: [Method] Main # 58| -1: [TypeMention] Void # 59| 4: [BlockStmt] {...} # 60| 0: [LocalVariableDeclStmt] ... ...; @@ -250,25 +250,25 @@ delegates.cs: # 81| 0: [LocalVariableDeclExpr] ContextCallback d # 81| 0: [TypeMention] ContextCallback # 86| 10: [Class] E -# 88| 5: [Field] Field +# 88| 6: [Field] Field # 88| -1: [TypeMention] Action # 88| 1: [TypeMention] int -# 89| 6: [Property] Property +# 89| 7: [Property] Property # 89| -1: [TypeMention] Action # 89| 1: [TypeMention] int # 89| 3: [Getter] get_Property # 89| 4: [Setter] set_Property #-----| 2: (Parameters) # 89| 0: [Parameter] value -# 90| 7: [Field] FieldPtr +# 90| 8: [Field] FieldPtr # 90| -1: [TypeMention] delegate* default -# 91| 8: [Property] PropertyPtr +# 91| 9: [Property] PropertyPtr # 91| -1: [TypeMention] delegate* default # 91| 3: [Getter] get_PropertyPtr # 91| 4: [Setter] set_PropertyPtr #-----| 2: (Parameters) # 91| 0: [Parameter] value -# 93| 9: [Method] M +# 93| 10: [Method] M # 93| -1: [TypeMention] Void # 94| 4: [BlockStmt] {...} # 95| 0: [ExprStmt] ...; diff --git a/csharp/ql/test/library-tests/dynamic/PrintAst.expected b/csharp/ql/test/library-tests/dynamic/PrintAst.expected index 160242e47f7e..3bde4d42d862 100644 --- a/csharp/ql/test/library-tests/dynamic/PrintAst.expected +++ b/csharp/ql/test/library-tests/dynamic/PrintAst.expected @@ -1,11 +1,11 @@ dynamic.cs: # 4| [Class] DynamicTest -# 6| 4: [InstanceConstructor] DynamicTest +# 6| 5: [InstanceConstructor] DynamicTest #-----| 2: (Parameters) # 6| 0: [Parameter] x # 6| -1: [TypeMention] int # 6| 4: [BlockStmt] {...} -# 8| 5: [Method] Main +# 8| 6: [Method] Main # 8| -1: [TypeMention] Void #-----| 2: (Parameters) # 8| 0: [Parameter] args @@ -235,25 +235,25 @@ dynamic.cs: # 75| 0: [DelegateCall] delegate call # 75| -1: [LocalVariableAccess] access to local variable d # 75| 0: [IntLiteral] 42 -# 78| 6: [Method] Foo +# 78| 7: [Method] Foo # 78| -1: [TypeMention] Void #-----| 2: (Parameters) # 78| 0: [Parameter] x # 78| -1: [TypeMention] int # 78| 4: [BlockStmt] {...} -# 79| 7: [Method] Foo +# 79| 8: [Method] Foo # 79| -1: [TypeMention] Void #-----| 2: (Parameters) # 79| 0: [Parameter] x # 79| -1: [TypeMention] string # 79| 4: [BlockStmt] {...} -# 81| 8: [Method] Bar +# 81| 9: [Method] Bar # 81| -1: [TypeMention] Void #-----| 2: (Parameters) # 81| 0: [Parameter] x # 81| -1: [TypeMention] string # 81| 4: [BlockStmt] {...} -# 83| 9: [IncrementOperator] ++ +# 83| 10: [IncrementOperator] ++ # 83| -1: [TypeMention] DynamicTest #-----| 2: (Parameters) # 83| 0: [Parameter] dt @@ -261,15 +261,15 @@ dynamic.cs: # 84| 4: [BlockStmt] {...} # 85| 0: [ReturnStmt] return ...; # 85| 0: [ParameterAccess] access to parameter dt -# 88| 10: [Field] Field +# 88| 11: [Field] Field # 88| -1: [TypeMention] int -# 90| 11: [Property] Prop +# 90| 12: [Property] Prop # 90| -1: [TypeMention] int # 90| 3: [Getter] get_Prop # 90| 4: [Setter] set_Prop #-----| 2: (Parameters) # 90| 0: [Parameter] value -# 92| 12: [Indexer] Item +# 92| 13: [Indexer] Item # 92| -1: [TypeMention] int #-----| 1: (Parameters) # 92| 0: [Parameter] x diff --git a/csharp/ql/test/library-tests/enums/PrintAst.expected b/csharp/ql/test/library-tests/enums/PrintAst.expected index bb9e5a3a9c9b..3495c43a4939 100644 --- a/csharp/ql/test/library-tests/enums/PrintAst.expected +++ b/csharp/ql/test/library-tests/enums/PrintAst.expected @@ -31,7 +31,7 @@ enums.cs: # 40| 1: [CastExpr] (...) ... # 40| 1: [MemberConstantAccess] access to constant Red # 44| 6: [Class] Test -# 47| 5: [Method] Main +# 47| 6: [Method] Main # 47| -1: [TypeMention] Void # 48| 4: [BlockStmt] {...} # 49| 0: [ExprStmt] ...; @@ -58,7 +58,7 @@ enums.cs: # 51| 0: [MemberConstantAccess] access to constant Blue # 51| -1: [TypeAccess] access to type SparseColor # 51| 0: [TypeMention] SparseColor -# 54| 6: [Method] StringFromColor +# 54| 7: [Method] StringFromColor # 54| -1: [TypeMention] string #-----| 2: (Parameters) # 54| 0: [Parameter] c diff --git a/csharp/ql/test/library-tests/events/PrintAst.expected b/csharp/ql/test/library-tests/events/PrintAst.expected index 84825067e429..4767ea990843 100644 --- a/csharp/ql/test/library-tests/events/PrintAst.expected +++ b/csharp/ql/test/library-tests/events/PrintAst.expected @@ -7,7 +7,7 @@ events.cs: # 7| 1: [Parameter] e # 7| -1: [TypeMention] object # 9| 2: [Class] Button -# 12| 5: [Event] Click +# 12| 6: [Event] Click # 12| -1: [TypeMention] EventHandler # 12| 3: [AddEventAccessor] add_Click #-----| 2: (Parameters) @@ -15,7 +15,7 @@ events.cs: # 12| 4: [RemoveEventAccessor] remove_Click #-----| 2: (Parameters) # 12| 0: [Parameter] value -# 14| 6: [Method] OnClick +# 14| 7: [Method] OnClick # 14| -1: [TypeMention] Void #-----| 2: (Parameters) # 14| 0: [Parameter] e @@ -30,7 +30,7 @@ events.cs: # 17| -1: [EventAccess,EventCall] access to event Click # 17| 0: [ThisAccess] this access # 17| 1: [ParameterAccess] access to parameter e -# 20| 7: [Method] Reset +# 20| 8: [Method] Reset # 20| -1: [TypeMention] Void # 21| 4: [BlockStmt] {...} # 22| 0: [ExprStmt] ...; @@ -38,11 +38,11 @@ events.cs: # 22| 0: [EventAccess,EventCall] access to event Click # 22| 1: [NullLiteral] null # 26| 3: [Class] LoginDialog -# 29| 4: [Field] OkButton +# 29| 5: [Field] OkButton # 29| -1: [TypeMention] Button -# 30| 5: [Field] CancelButton +# 30| 6: [Field] CancelButton # 30| -1: [TypeMention] Button -# 32| 6: [InstanceConstructor] LoginDialog +# 32| 7: [InstanceConstructor] LoginDialog # 33| 4: [BlockStmt] {...} # 34| 0: [ExprStmt] ...; # 34| 0: [AssignExpr] ... = ... @@ -68,7 +68,7 @@ events.cs: # 37| 1: [ExplicitDelegateCreation] delegate creation of type EventHandler # 37| -1: [TypeMention] EventHandler # 37| 0: [MethodAccess] access to method CancelButtonClick -# 40| 7: [Method] OkButtonClick +# 40| 8: [Method] OkButtonClick # 40| -1: [TypeMention] Void #-----| 2: (Parameters) # 40| 0: [Parameter] sender @@ -76,7 +76,7 @@ events.cs: # 40| 1: [Parameter] e # 40| -1: [TypeMention] object # 41| 4: [BlockStmt] {...} -# 44| 8: [Method] CancelButtonClick +# 44| 9: [Method] CancelButtonClick # 44| -1: [TypeMention] Void #-----| 2: (Parameters) # 44| 0: [Parameter] sender @@ -85,15 +85,15 @@ events.cs: # 44| -1: [TypeMention] object # 45| 4: [BlockStmt] {...} # 50| 4: [Class] Control -# 53| 6: [Field] mouseDownEventKey +# 53| 7: [Field] mouseDownEventKey # 53| -1: [TypeMention] object # 53| 1: [ObjectCreation] object creation of type Object # 53| 0: [TypeMention] object -# 54| 7: [Field] mouseUpEventKey +# 54| 8: [Field] mouseUpEventKey # 54| -1: [TypeMention] object # 54| 1: [ObjectCreation] object creation of type Object # 54| 0: [TypeMention] object -# 57| 8: [Method] GetEventHandler +# 57| 9: [Method] GetEventHandler # 57| -1: [TypeMention] Delegate #-----| 2: (Parameters) # 57| 0: [Parameter] key @@ -101,7 +101,7 @@ events.cs: # 57| 4: [BlockStmt] {...} # 57| 0: [ReturnStmt] return ...; # 57| 0: [NullLiteral] null -# 60| 9: [Method] AddEventHandler +# 60| 10: [Method] AddEventHandler # 60| -1: [TypeMention] Void #-----| 2: (Parameters) # 60| 0: [Parameter] key @@ -109,7 +109,7 @@ events.cs: # 60| 1: [Parameter] handler # 60| -1: [TypeMention] Delegate # 60| 4: [BlockStmt] {...} -# 63| 10: [Method] RemoveEventHandler +# 63| 11: [Method] RemoveEventHandler # 63| -1: [TypeMention] Void #-----| 2: (Parameters) # 63| 0: [Parameter] key @@ -117,7 +117,7 @@ events.cs: # 63| 1: [Parameter] handler # 63| -1: [TypeMention] Delegate # 63| 4: [BlockStmt] {...} -# 66| 11: [Event] MouseDown +# 66| 12: [Event] MouseDown # 68| 3: [AddEventAccessor] add_MouseDown #-----| 2: (Parameters) # 68| 0: [Parameter] value @@ -134,7 +134,7 @@ events.cs: # 69| 0: [MethodCall] call to method RemoveEventHandler # 69| 0: [FieldAccess] access to field mouseDownEventKey # 69| 1: [ParameterAccess] access to parameter value -# 73| 12: [Event] MouseUp +# 73| 13: [Event] MouseUp # 75| 3: [AddEventAccessor] add_MouseUp #-----| 2: (Parameters) # 75| 0: [Parameter] value @@ -151,7 +151,7 @@ events.cs: # 76| 0: [MethodCall] call to method RemoveEventHandler # 76| 0: [FieldAccess] access to field mouseUpEventKey # 76| 1: [ParameterAccess] access to parameter value -# 80| 13: [Method] OnMouseUp +# 80| 14: [Method] OnMouseUp # 80| -1: [TypeMention] Void #-----| 2: (Parameters) # 80| 0: [Parameter] args diff --git a/csharp/ql/test/library-tests/exceptions/PrintAst.expected b/csharp/ql/test/library-tests/exceptions/PrintAst.expected index bbe09076bc61..bdc7ecb36881 100644 --- a/csharp/ql/test/library-tests/exceptions/PrintAst.expected +++ b/csharp/ql/test/library-tests/exceptions/PrintAst.expected @@ -1,11 +1,11 @@ exceptions.cs: # 3| [Class] Class1 -# 5| 5: [Method] G +# 5| 6: [Method] G # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} -# 9| 6: [Field] p +# 9| 7: [Field] p # 9| -1: [TypeMention] int -# 11| 7: [Method] TestNoThrow +# 11| 8: [Method] TestNoThrow # 11| -1: [TypeMention] Void # 12| 4: [BlockStmt] {...} # 13| 0: [TryStmt] try {...} ... @@ -38,7 +38,7 @@ exceptions.cs: # 33| 0: [TypeMention] Exception # 34| 1: [BlockStmt] {...} # 35| 0: [EmptyStmt] ; -# 43| 8: [Method] TestCall +# 43| 9: [Method] TestCall # 43| -1: [TypeMention] Void # 44| 4: [BlockStmt] {...} # 45| 0: [TryStmt] try {...} ... @@ -69,7 +69,7 @@ exceptions.cs: # 66| 5: [GeneralCatchClause] catch {...} # 67| 1: [BlockStmt] {...} # 68| 0: [EmptyStmt] ; -# 72| 9: [Method] TestCreation +# 72| 10: [Method] TestCreation # 72| -1: [TypeMention] Void # 73| 4: [BlockStmt] {...} # 74| 0: [TryStmt] try {...} ... @@ -106,7 +106,7 @@ exceptions.cs: # 95| 0: [TypeMention] Exception # 96| 1: [BlockStmt] {...} # 97| 0: [EmptyStmt] ; -# 101| 10: [Method] TestIntAdd +# 101| 11: [Method] TestIntAdd # 101| -1: [TypeMention] Void # 102| 4: [BlockStmt] {...} # 103| 0: [TryStmt] try {...} ... @@ -144,7 +144,7 @@ exceptions.cs: # 124| 0: [TypeMention] Exception # 125| 1: [BlockStmt] {...} # 126| 0: [EmptyStmt] ; -# 130| 11: [Method] TestIntSub +# 130| 12: [Method] TestIntSub # 130| -1: [TypeMention] Void # 131| 4: [BlockStmt] {...} # 132| 0: [TryStmt] try {...} ... @@ -182,7 +182,7 @@ exceptions.cs: # 153| 0: [TypeMention] Exception # 154| 1: [BlockStmt] {...} # 155| 0: [EmptyStmt] ; -# 159| 12: [Method] TestIntMul +# 159| 13: [Method] TestIntMul # 159| -1: [TypeMention] Void # 160| 4: [BlockStmt] {...} # 161| 0: [TryStmt] try {...} ... @@ -220,7 +220,7 @@ exceptions.cs: # 182| 0: [TypeMention] Exception # 183| 1: [BlockStmt] {...} # 184| 0: [EmptyStmt] ; -# 188| 13: [Method] TestStringLiteral +# 188| 14: [Method] TestStringLiteral # 188| -1: [TypeMention] Void # 189| 4: [BlockStmt] {...} # 190| 0: [TryStmt] try {...} ... @@ -256,7 +256,7 @@ exceptions.cs: # 211| 0: [TypeMention] Exception # 212| 1: [BlockStmt] {...} # 213| 0: [EmptyStmt] ; -# 217| 14: [Method] TestStringAdd +# 217| 15: [Method] TestStringAdd # 217| -1: [TypeMention] Void # 218| 4: [BlockStmt] {...} # 219| 0: [TryStmt] try {...} ... @@ -299,7 +299,7 @@ exceptions.cs: # 241| 0: [TypeMention] Exception # 242| 1: [BlockStmt] {...} # 243| 0: [EmptyStmt] ; -# 247| 15: [Method] TestDivide +# 247| 16: [Method] TestDivide # 247| -1: [TypeMention] Void # 248| 4: [BlockStmt] {...} # 249| 0: [TryStmt] try {...} ... @@ -337,7 +337,7 @@ exceptions.cs: # 270| 0: [TypeMention] Exception # 271| 1: [BlockStmt] {...} # 272| 0: [EmptyStmt] ; -# 276| 16: [Method] TestRemainder +# 276| 17: [Method] TestRemainder # 276| -1: [TypeMention] Void # 277| 4: [BlockStmt] {...} # 278| 0: [TryStmt] try {...} ... @@ -375,7 +375,7 @@ exceptions.cs: # 299| 0: [TypeMention] Exception # 300| 1: [BlockStmt] {...} # 301| 0: [EmptyStmt] ; -# 305| 17: [Method] TestMemberAccess +# 305| 18: [Method] TestMemberAccess # 305| -1: [TypeMention] Void # 306| 4: [BlockStmt] {...} # 307| 0: [TryStmt] try {...} ... @@ -412,7 +412,7 @@ exceptions.cs: # 328| 0: [TypeMention] Exception # 329| 1: [BlockStmt] {...} # 330| 0: [EmptyStmt] ; -# 334| 18: [Method] TestCast +# 334| 19: [Method] TestCast # 334| -1: [TypeMention] Void # 335| 4: [BlockStmt] {...} # 336| 0: [TryStmt] try {...} ... @@ -451,7 +451,7 @@ exceptions.cs: # 357| 0: [TypeMention] Exception # 358| 1: [BlockStmt] {...} # 359| 0: [EmptyStmt] ; -# 363| 19: [Method] TestThrow +# 363| 20: [Method] TestThrow # 363| -1: [TypeMention] Void # 364| 4: [BlockStmt] {...} # 365| 0: [TryStmt] try {...} ... @@ -490,7 +490,7 @@ exceptions.cs: # 387| 0: [TypeMention] Exception # 388| 1: [BlockStmt] {...} # 389| 0: [EmptyStmt] ; -# 393| 20: [Method] TestUnaryOperation +# 393| 21: [Method] TestUnaryOperation # 393| -1: [TypeMention] Void # 394| 4: [BlockStmt] {...} # 395| 0: [TryStmt] try {...} ... @@ -529,7 +529,7 @@ exceptions.cs: # 417| 0: [TypeMention] Exception # 418| 1: [BlockStmt] {...} # 419| 0: [EmptyStmt] ; -# 423| 21: [Method] TestRethrow +# 423| 22: [Method] TestRethrow # 423| -1: [TypeMention] Void # 424| 4: [BlockStmt] {...} # 425| 0: [TryStmt] try {...} ... @@ -548,7 +548,7 @@ exceptions.cs: # 440| 2: [GeneralCatchClause] catch {...} # 441| 1: [BlockStmt] {...} # 442| 0: [EmptyStmt] ; -# 446| 22: [Method] TestSubtypeCast +# 446| 23: [Method] TestSubtypeCast # 446| -1: [TypeMention] Void # 447| 4: [BlockStmt] {...} # 448| 0: [TryStmt] try {...} ... @@ -577,7 +577,7 @@ exceptions.cs: # 458| 0: [TypeMention] Exception # 459| 1: [BlockStmt] {...} # 460| 0: [EmptyStmt] ; -# 464| 23: [Method] TestDivideMaybeZero +# 464| 24: [Method] TestDivideMaybeZero # 464| -1: [TypeMention] Void #-----| 2: (Parameters) # 464| 0: [Parameter] i diff --git a/csharp/ql/test/library-tests/expressions/PrintAst.expected b/csharp/ql/test/library-tests/expressions/PrintAst.expected index bee0a1e429cd..208ea3881140 100644 --- a/csharp/ql/test/library-tests/expressions/PrintAst.expected +++ b/csharp/ql/test/library-tests/expressions/PrintAst.expected @@ -1,6 +1,6 @@ FoldedLiterals.cs: # 1| [Class] FoldedLiterals -# 3| 5: [Method] Test +# 3| 6: [Method] Test # 3| -1: [TypeMention] Void # 4| 4: [BlockStmt] {...} # 6| 0: [LocalVariableDeclStmt] ... ...; @@ -338,7 +338,7 @@ FoldedLiterals.cs: # 77| 0: [DecimalLiteral] 11 MethodAccess.cs: # 3| [Class] MethodAccess -# 5| 5: [Method] M +# 5| 6: [Method] M # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} # 7| 0: [LocalFunctionStmt] M1(...) @@ -374,29 +374,29 @@ MethodAccess.cs: # 12| 0: [MethodAccess] access to method M3 # 12| -1: [TypeAccess] access to type MethodAccess # 12| 0: [TypeMention] MethodAccess -# 15| 6: [Method] M2 +# 15| 7: [Method] M2 # 15| -1: [TypeMention] Void # 15| 4: [BlockStmt] {...} -# 17| 7: [Method] M3 +# 17| 8: [Method] M3 # 17| -1: [TypeMention] Void # 17| 4: [BlockStmt] {...} Qualifiers.cs: # 3| [Class] Qualifiers -# 5| 5: [Property] S +# 5| 6: [Property] S # 5| -1: [TypeMention] short # 5| 3: [Getter] get_S # 5| 4: [MethodCall] call to method Static # 5| 0: [NullLiteral] null -# 7| 6: [Property] I +# 7| 7: [Property] I # 7| -1: [TypeMention] int # 7| 3: [Getter] get_I # 7| 4: [MethodCall] call to method Instance -# 9| 7: [Property] B +# 9| 8: [Property] B # 9| -1: [TypeMention] bool # 9| 3: [Getter] get_B # 9| 4: [MethodCall] call to method Instance # 9| -1: [ThisAccess] this access -# 11| 9: [Method] Static`1 +# 11| 10: [Method] Static`1 # 11| -1: [TypeMention] T #-----| 1: (Type parameters) # 11| 0: [TypeParameter] T @@ -406,7 +406,7 @@ Qualifiers.cs: # 11| 4: [DefaultValueExpr] default(...) # 11| 0: [TypeAccess] access to type T # 11| 0: [TypeMention] T -# 13| 12: [Method] Instance`1 +# 13| 13: [Method] Instance`1 # 13| -1: [TypeMention] T #-----| 1: (Type parameters) # 13| 0: [TypeParameter] T @@ -415,7 +415,7 @@ Qualifiers.cs: # 13| 0: [TypeMention] T ReducedExpression.cs: # 2| [Class] ReducedClass -# 5| 5: [Field] ReducedExpression +# 5| 6: [Field] ReducedExpression # 5| -1: [TypeMention] int # 5| 1: [ConditionalExpr] ... ? ... : ... # 5| 0: [BoolLiteral] true @@ -424,7 +424,7 @@ ReducedExpression.cs: expressions.cs: # 5| [NamespaceDeclaration] namespace ... { ... } # 7| 1: [Class] Class -# 10| 4: [Method] MainLiterals +# 10| 5: [Method] MainLiterals # 10| -1: [TypeMention] Void # 11| 4: [BlockStmt] {...} # 12| 0: [LocalVariableDeclStmt] ... ...; @@ -514,7 +514,7 @@ expressions.cs: # 34| 0: [AssignExpr] ... = ... # 34| 0: [LocalVariableAccess] access to local variable o # 34| 1: [NullLiteral] null -# 37| 5: [Method] LogicalOperators +# 37| 6: [Method] LogicalOperators # 37| -1: [TypeMention] bool #-----| 2: (Parameters) # 37| 0: [Parameter] a @@ -546,15 +546,15 @@ expressions.cs: # 41| 1: [ParameterAccess] access to parameter b # 41| 1: [LogicalNotExpr] !... # 41| 0: [LocalVariableAccess] access to local variable c -# 44| 6: [Field] constant +# 44| 7: [Field] constant # 44| -1: [TypeMention] string # 44| 1: [StringLiteralUtf16] "constant" -# 45| 7: [Field] f +# 45| 8: [Field] f # 45| -1: [TypeMention] int # 45| 1: [IntLiteral] 0 -# 46| 8: [Field] name +# 46| 9: [Field] name # 46| -1: [TypeMention] string -# 48| 9: [StaticConstructor] Class +# 48| 10: [StaticConstructor] Class # 49| 4: [BlockStmt] {...} # 51| 0: [ExprStmt] ...; # 51| 0: [AssignExpr] ... = ... @@ -568,19 +568,19 @@ expressions.cs: # 52| 0: [TypeMention] Class # 53| 2: [ExprStmt] ...; # 53| 0: [MethodCall] call to method Foo -# 56| 10: [InstanceConstructor] Class +# 56| 11: [InstanceConstructor] Class # 56| 3: [ConstructorInitializer] call to constructor Class # 56| 0: [IntLiteral] 0 # 56| 4: [BlockStmt] {...} -# 58| 11: [InstanceConstructor] Class +# 58| 12: [InstanceConstructor] Class #-----| 2: (Parameters) # 58| 0: [Parameter] i # 58| -1: [TypeMention] int # 58| 4: [BlockStmt] {...} -# 60| 12: [Method] Foo +# 60| 13: [Method] Foo # 60| -1: [TypeMention] Void # 60| 4: [BlockStmt] {...} -# 62| 13: [Method] Bar +# 62| 14: [Method] Bar # 62| -1: [TypeMention] int #-----| 2: (Parameters) # 62| 0: [Parameter] x @@ -593,7 +593,7 @@ expressions.cs: # 64| 0: [PropertyCall] access to property Length # 64| -1: [ParameterAccess] access to parameter s # 64| 1: [ParameterAccess] access to parameter x -# 67| 14: [Property] Name +# 67| 15: [Property] Name # 67| -1: [TypeMention] string # 69| 3: [Getter] get_Name # 69| 4: [BlockStmt] {...} @@ -607,7 +607,7 @@ expressions.cs: # 70| 0: [AssignExpr] ... = ... # 70| 0: [FieldAccess] access to field name # 70| 1: [ParameterAccess] access to parameter value -# 73| 15: [Indexer] Item +# 73| 16: [Indexer] Item # 73| -1: [TypeMention] bool #-----| 1: (Parameters) # 73| 0: [Parameter] i @@ -638,7 +638,7 @@ expressions.cs: # 76| 1: [ExprStmt] ...; # 76| 0: [PostIncrExpr] ...++ # 76| 0: [FieldAccess] access to field f -# 79| 16: [Method] MainAccesses +# 79| 17: [Method] MainAccesses # 79| -1: [TypeMention] Void #-----| 2: (Parameters) # 79| 0: [Parameter] other @@ -718,7 +718,7 @@ expressions.cs: # 89| -1: [LocalVariableAccess] access to local variable inlinearray # 89| 0: [IntLiteral] 2 # 89| 1: [IntLiteral] 7 -# 92| 17: [Method] MainIsAsCast +# 92| 18: [Method] MainIsAsCast # 92| -1: [TypeMention] Void #-----| 2: (Parameters) # 92| 0: [Parameter] s @@ -780,14 +780,14 @@ expressions.cs: # 101| 1: [StringLiteralUtf16] " " # 101| 1: [CastExpr] (...) ... # 101| 1: [LocalVariableAccess] access to local variable i -# 104| 18: [Class] Y`2 +# 104| 19: [Class] Y`2 #-----| 1: (Type parameters) # 104| 0: [TypeParameter] T # 104| 1: [TypeParameter] U -# 108| 20: [Class] X`1 +# 108| 21: [Class] X`1 #-----| 1: (Type parameters) # 108| 0: [TypeParameter] T -# 111| 5: [Method] PrintTypes +# 111| 6: [Method] PrintTypes # 111| -1: [TypeMention] Void # 112| 4: [BlockStmt] {...} # 113| 0: [LocalVariableDeclStmt] ... ...; @@ -840,17 +840,17 @@ expressions.cs: # 125| 1: [DefaultValueExpr] default(...) # 125| 0: [TypeAccess] access to type T # 125| 0: [TypeMention] T -# 130| 21: [Class] Nested +# 130| 22: [Class] Nested #-----| 3: (Base types) # 130| 0: [TypeMention] Class -# 132| 4: [StaticConstructor] Nested +# 132| 5: [StaticConstructor] Nested # 132| 4: [BlockStmt] {...} -# 133| 5: [InstanceConstructor] Nested +# 133| 6: [InstanceConstructor] Nested #-----| 2: (Parameters) # 133| 0: [Parameter] b # 133| -1: [TypeMention] bool # 133| 4: [BlockStmt] {...} -# 134| 6: [InstanceConstructor] Nested +# 134| 7: [InstanceConstructor] Nested #-----| 2: (Parameters) # 134| 0: [Parameter] i # 134| -1: [TypeMention] int @@ -859,7 +859,7 @@ expressions.cs: # 134| 0: [ParameterAccess] access to parameter i # 134| 1: [IntLiteral] 1 # 134| 4: [BlockStmt] {...} -# 136| 7: [Method] OtherAccesses +# 136| 8: [Method] OtherAccesses # 136| -1: [TypeMention] Void # 137| 4: [BlockStmt] {...} # 138| 0: [ExprStmt] ...; @@ -880,7 +880,7 @@ expressions.cs: # 139| 4: [CastExpr] (...) ... # 139| 1: [IntLiteral] 4 # 139| 5: [StringLiteralUtf16] "" -# 144| 22: [Method] MainLocalVarDecl +# 144| 23: [Method] MainLocalVarDecl # 144| -1: [TypeMention] Void # 145| 4: [BlockStmt] {...} # 146| 0: [LocalVariableDeclStmt] ... ...; @@ -918,7 +918,7 @@ expressions.cs: # 151| -1: [TypeMention] string # 151| 0: [LocalVariableAccess] access to local variable y # 151| 1: [StringLiteralUtf16] "test" -# 154| 23: [Method] MainLocalConstDecl +# 154| 24: [Method] MainLocalConstDecl # 154| -1: [TypeMention] Void # 155| 4: [BlockStmt] {...} # 156| 0: [LocalConstantDeclStmt] const ... ...; @@ -944,7 +944,7 @@ expressions.cs: # 158| 1: [LocalVariableAccess] access to local variable r # 158| 1: [CastExpr] (...) ... # 158| 1: [LocalVariableAccess] access to local variable r -# 161| 24: [Method] MainChecked +# 161| 25: [Method] MainChecked # 161| -1: [TypeMention] Void # 162| 4: [BlockStmt] {...} # 163| 0: [LocalVariableDeclStmt] ... ...; @@ -961,7 +961,7 @@ expressions.cs: # 164| 0: [AddExpr] ... + ... # 164| 0: [FieldAccess] access to field f # 164| 1: [IntLiteral] 20 -# 167| 25: [Method] MainElementAccess +# 167| 26: [Method] MainElementAccess # 167| -1: [TypeMention] Void #-----| 2: (Parameters) # 167| 0: [Parameter] i @@ -978,7 +978,7 @@ expressions.cs: # 169| -1: [ArrayInitializer] { ..., ... } # 169| 0: [CastExpr] (...) ... # 169| 1: [ParameterAccess] access to parameter i -# 172| 26: [Method] MainDelegateAndMethodAccesses +# 172| 27: [Method] MainDelegateAndMethodAccesses # 172| -1: [TypeMention] Void # 173| 4: [BlockStmt] {...} # 174| 0: [LocalVariableDeclStmt] ... ...; @@ -1127,26 +1127,26 @@ expressions.cs: # 205| 0: [Parameter] x # 205| -1: [TypeMention] int # 207| 4: [Class] C -# 210| 5: [Method] M1 +# 210| 6: [Method] M1 # 210| -1: [TypeMention] Void #-----| 2: (Parameters) # 210| 0: [Parameter] i # 210| -1: [TypeMention] int # 210| 4: [BlockStmt] {...} -# 211| 6: [Method] M2 +# 211| 7: [Method] M2 # 211| -1: [TypeMention] Void #-----| 2: (Parameters) # 211| 0: [Parameter] i # 211| -1: [TypeMention] int # 211| 4: [BlockStmt] {...} -# 212| 7: [Method] M3 +# 212| 8: [Method] M3 # 212| -1: [TypeMention] Void #-----| 2: (Parameters) # 212| 0: [Parameter] i # 212| -1: [TypeMention] int # 212| 4: [BlockStmt] {...} # 216| 5: [Class] X -# 219| 5: [Method] F +# 219| 6: [Method] F # 219| -1: [TypeMention] bool #-----| 2: (Parameters) # 219| 0: [Parameter] i @@ -1156,7 +1156,7 @@ expressions.cs: # 219| 0: [LTExpr] ... < ... # 219| 0: [ParameterAccess] access to parameter i # 219| 1: [IntLiteral] 2 -# 221| 6: [Method] G +# 221| 7: [Method] G # 221| -1: [TypeMention] bool #-----| 2: (Parameters) # 221| 0: [Parameter] s @@ -1171,7 +1171,7 @@ expressions.cs: # 225| 1: [Parameter] e # 225| -1: [TypeMention] object # 227| 7: [Class] Button -# 230| 5: [Event] Click +# 230| 6: [Event] Click # 230| -1: [TypeMention] EventHandler # 230| 3: [AddEventAccessor] add_Click #-----| 2: (Parameters) @@ -1179,7 +1179,7 @@ expressions.cs: # 230| 4: [RemoveEventAccessor] remove_Click #-----| 2: (Parameters) # 230| 0: [Parameter] value -# 232| 6: [Method] OnClick +# 232| 7: [Method] OnClick # 232| -1: [TypeMention] Void #-----| 2: (Parameters) # 232| 0: [Parameter] e @@ -1194,7 +1194,7 @@ expressions.cs: # 235| -1: [EventAccess,EventCall] access to event Click # 235| 0: [ThisAccess] this access # 235| 1: [ParameterAccess] access to parameter e -# 238| 7: [Method] Reset +# 238| 8: [Method] Reset # 238| -1: [TypeMention] Void # 239| 4: [BlockStmt] {...} # 240| 0: [ExprStmt] ...; @@ -1202,11 +1202,11 @@ expressions.cs: # 240| 0: [EventAccess,EventCall] access to event Click # 240| 1: [NullLiteral] null # 244| 8: [Class] LoginDialog -# 247| 4: [Field] OkButton +# 247| 5: [Field] OkButton # 247| -1: [TypeMention] Button -# 248| 5: [Field] CancelButton +# 248| 6: [Field] CancelButton # 248| -1: [TypeMention] Button -# 250| 6: [InstanceConstructor] LoginDialog +# 250| 7: [InstanceConstructor] LoginDialog # 251| 4: [BlockStmt] {...} # 252| 0: [ExprStmt] ...; # 252| 0: [AssignExpr] ... = ... @@ -1232,7 +1232,7 @@ expressions.cs: # 255| 1: [ExplicitDelegateCreation] delegate creation of type EventHandler # 255| -1: [TypeMention] EventHandler # 255| 0: [MethodAccess] access to method CancelButtonClick -# 258| 7: [Method] OkButtonClick +# 258| 8: [Method] OkButtonClick # 258| -1: [TypeMention] Void #-----| 2: (Parameters) # 258| 0: [Parameter] sender @@ -1240,7 +1240,7 @@ expressions.cs: # 258| 1: [Parameter] e # 258| -1: [TypeMention] object # 259| 4: [BlockStmt] {...} -# 262| 8: [Method] CancelButtonClick +# 262| 9: [Method] CancelButtonClick # 262| -1: [TypeMention] Void #-----| 2: (Parameters) # 262| 0: [Parameter] sender @@ -1249,18 +1249,18 @@ expressions.cs: # 262| -1: [TypeMention] object # 263| 4: [BlockStmt] {...} # 268| 9: [Class] IntVector -# 271| 4: [InstanceConstructor] IntVector +# 271| 5: [InstanceConstructor] IntVector #-----| 2: (Parameters) # 271| 0: [Parameter] length # 271| -1: [TypeMention] int # 271| 4: [BlockStmt] {...} -# 273| 5: [Property] Length +# 273| 6: [Property] Length # 273| -1: [TypeMention] int # 273| 3: [Getter] get_Length # 273| 4: [BlockStmt] {...} # 273| 0: [ReturnStmt] return ...; # 273| 0: [IntLiteral] 4 -# 275| 6: [Indexer] Item +# 275| 7: [Indexer] Item # 275| -1: [TypeMention] int #-----| 1: (Parameters) # 275| 0: [Parameter] index @@ -1276,7 +1276,7 @@ expressions.cs: # 275| 0: [Parameter] index # 275| 1: [Parameter] value # 275| 4: [BlockStmt] {...} -# 277| 7: [IncrementOperator] ++ +# 277| 8: [IncrementOperator] ++ # 277| -1: [TypeMention] IntVector #-----| 2: (Parameters) # 277| 0: [Parameter] iv @@ -1313,7 +1313,7 @@ expressions.cs: # 281| 1: [IntLiteral] 1 # 282| 2: [ReturnStmt] return ...; # 282| 0: [LocalVariableAccess] access to local variable temp -# 285| 8: [AddOperator] + +# 285| 9: [AddOperator] + # 285| -1: [TypeMention] IntVector #-----| 2: (Parameters) # 285| 0: [Parameter] iv1 @@ -1324,7 +1324,7 @@ expressions.cs: # 287| 0: [ReturnStmt] return ...; # 287| 0: [ParameterAccess] access to parameter iv1 # 292| 10: [Class] TestUnaryOperator -# 295| 5: [Method] MainUnaryOperator +# 295| 6: [Method] MainUnaryOperator # 295| -1: [TypeMention] Void # 296| 4: [BlockStmt] {...} # 297| 0: [LocalVariableDeclStmt] ... ...; @@ -1355,9 +1355,9 @@ expressions.cs: # 301| 0: [LocalVariableAccess] access to local variable iv1 # 301| 1: [LocalVariableAccess] access to local variable iv2 # 306| 11: [Struct] Digit -# 309| 5: [Field] value +# 309| 6: [Field] value # 309| -1: [TypeMention] byte -# 311| 6: [InstanceConstructor] Digit +# 311| 7: [InstanceConstructor] Digit #-----| 2: (Parameters) # 311| 0: [Parameter] value # 311| -1: [TypeMention] byte @@ -1380,7 +1380,7 @@ expressions.cs: # 315| 0: [FieldAccess] access to field value # 315| -1: [ThisAccess] this access # 315| 1: [ParameterAccess] access to parameter value -# 318| 7: [ImplicitConversionOperator] implicit conversion +# 318| 8: [ImplicitConversionOperator] implicit conversion # 318| -1: [TypeMention] byte #-----| 2: (Parameters) # 318| 0: [Parameter] d @@ -1389,7 +1389,7 @@ expressions.cs: # 320| 0: [ReturnStmt] return ...; # 320| 0: [FieldAccess] access to field value # 320| -1: [ParameterAccess] access to parameter d -# 323| 8: [ExplicitConversionOperator] explicit conversion +# 323| 9: [ExplicitConversionOperator] explicit conversion # 323| -1: [TypeMention] Digit #-----| 2: (Parameters) # 323| 0: [Parameter] b @@ -1400,7 +1400,7 @@ expressions.cs: # 325| -1: [TypeMention] Digit # 325| 0: [ParameterAccess] access to parameter b # 330| 12: [Class] TestConversionOperator -# 333| 5: [Method] MainConversionOperator +# 333| 6: [Method] MainConversionOperator # 333| -1: [TypeMention] Void # 334| 4: [BlockStmt] {...} # 335| 0: [LocalVariableDeclStmt] ... ...; @@ -1418,11 +1418,11 @@ expressions.cs: # 336| 1: [OperatorCall] call to operator implicit conversion # 336| 0: [LocalVariableAccess] access to local variable d # 341| 13: [Class] Point -# 344| 5: [Field] x +# 344| 6: [Field] x # 344| -1: [TypeMention] int -# 344| 6: [Field] y +# 344| 7: [Field] y # 344| -1: [TypeMention] int -# 346| 7: [Property] X +# 346| 8: [Property] X # 346| -1: [TypeMention] int # 346| 3: [Getter] get_X # 346| 4: [BlockStmt] {...} @@ -1436,7 +1436,7 @@ expressions.cs: # 346| 0: [AssignExpr] ... = ... # 346| 0: [FieldAccess] access to field x # 346| 1: [ParameterAccess] access to parameter value -# 347| 8: [Property] Y +# 347| 9: [Property] Y # 347| -1: [TypeMention] int # 347| 3: [Getter] get_Y # 347| 4: [BlockStmt] {...} @@ -1451,11 +1451,11 @@ expressions.cs: # 347| 0: [FieldAccess] access to field y # 347| 1: [ParameterAccess] access to parameter value # 351| 14: [Class] Rectangle -# 354| 5: [Field] p1 +# 354| 6: [Field] p1 # 354| -1: [TypeMention] Point -# 354| 6: [Field] p2 +# 354| 7: [Field] p2 # 354| -1: [TypeMention] Point -# 356| 7: [Property] P1 +# 356| 8: [Property] P1 # 356| -1: [TypeMention] Point # 356| 3: [Getter] get_P1 # 356| 4: [BlockStmt] {...} @@ -1469,7 +1469,7 @@ expressions.cs: # 356| 0: [AssignExpr] ... = ... # 356| 0: [FieldAccess] access to field p1 # 356| 1: [ParameterAccess] access to parameter value -# 357| 8: [Property] P2 +# 357| 9: [Property] P2 # 357| -1: [TypeMention] Point # 357| 3: [Getter] get_P2 # 357| 4: [BlockStmt] {...} @@ -1484,36 +1484,36 @@ expressions.cs: # 357| 0: [FieldAccess] access to field p2 # 357| 1: [ParameterAccess] access to parameter value # 361| 15: [Class] Rectangle2 -# 364| 5: [Field] p1 +# 364| 6: [Field] p1 # 364| -1: [TypeMention] Point # 364| 1: [ObjectCreation] object creation of type Point # 364| 0: [TypeMention] Point -# 365| 6: [Field] p2 +# 365| 7: [Field] p2 # 365| -1: [TypeMention] Point # 365| 1: [ObjectCreation] object creation of type Point # 365| 0: [TypeMention] Point -# 367| 7: [Property] P1 +# 367| 8: [Property] P1 # 367| -1: [TypeMention] Point # 367| 3: [Getter] get_P1 # 367| 4: [BlockStmt] {...} # 367| 0: [ReturnStmt] return ...; # 367| 0: [FieldAccess] access to field p1 -# 368| 8: [Property] P2 +# 368| 9: [Property] P2 # 368| -1: [TypeMention] Point # 368| 3: [Getter] get_P2 # 368| 4: [BlockStmt] {...} # 368| 0: [ReturnStmt] return ...; # 368| 0: [FieldAccess] access to field p2 # 372| 16: [Class] Contact -# 375| 5: [Field] name +# 375| 6: [Field] name # 375| -1: [TypeMention] string -# 376| 6: [Field] phoneNumbers +# 376| 7: [Field] phoneNumbers # 376| -1: [TypeMention] List # 376| 1: [TypeMention] string # 376| 1: [ObjectCreation] object creation of type List # 376| 0: [TypeMention] List # 376| 1: [TypeMention] string -# 378| 7: [Property] Name +# 378| 8: [Property] Name # 378| -1: [TypeMention] string # 378| 3: [Getter] get_Name # 378| 4: [BlockStmt] {...} @@ -1527,7 +1527,7 @@ expressions.cs: # 378| 0: [AssignExpr] ... = ... # 378| 0: [FieldAccess] access to field name # 378| 1: [ParameterAccess] access to parameter value -# 379| 8: [Property] PhoneNumbers +# 379| 9: [Property] PhoneNumbers # 379| -1: [TypeMention] List # 379| 1: [TypeMention] string # 379| 3: [Getter] get_PhoneNumbers @@ -1535,7 +1535,7 @@ expressions.cs: # 379| 0: [ReturnStmt] return ...; # 379| 0: [FieldAccess] access to field phoneNumbers # 383| 17: [Class] TestCreations -# 386| 5: [Method] MainCreations +# 386| 6: [Method] MainCreations # 386| -1: [TypeMention] Void # 387| 4: [BlockStmt] {...} # 388| 0: [LocalVariableDeclStmt] ... ...; @@ -1827,14 +1827,14 @@ expressions.cs: # 430| 0: [EQExpr] ... == ... # 430| 0: [LocalVariableAccess] access to local variable i # 430| 1: [IntLiteral] 2 -# 433| 6: [DelegateType] S +# 433| 7: [DelegateType] S #-----| 2: (Parameters) # 433| 0: [Parameter] x # 433| -1: [TypeMention] int # 433| 1: [Parameter] y # 433| -1: [TypeMention] int -# 434| 7: [DelegateType] Unit -# 436| 8: [Method] MultiDimensionalArrayCreations +# 434| 8: [DelegateType] Unit +# 436| 9: [Method] MultiDimensionalArrayCreations # 436| -1: [TypeMention] Void # 437| 4: [BlockStmt] {...} # 438| 0: [LocalVariableDeclStmt] ... ...; @@ -1994,7 +1994,7 @@ expressions.cs: # 445| 0: [IntLiteral] 1 # 445| 1: [IntLiteral] 2 # 445| 2: [IntLiteral] 3 -# 448| 9: [Method] MainAnonymousFunctions +# 448| 10: [Method] MainAnonymousFunctions # 448| -1: [TypeMention] Void # 449| 4: [BlockStmt] {...} # 450| 0: [LocalVariableDeclStmt] ... ...; @@ -2108,7 +2108,7 @@ expressions.cs: # 458| 0: [LocalVariableAccess] access to local variable j # 458| 1: [IntLiteral] 1 # 463| 18: [Class] OperatorCalls -# 465| 5: [Method] delegateCombine +# 465| 6: [Method] delegateCombine # 465| -1: [TypeMention] Void #-----| 2: (Parameters) # 465| 0: [Parameter] fun @@ -2123,7 +2123,7 @@ expressions.cs: # 468| 0: [AssignAddExpr] ... += ... # 468| 0: [LocalVariableAccess] access to local variable PropertyChanged # 468| 1: [ParameterAccess] access to parameter fun -# 471| 6: [Method] addition +# 471| 7: [Method] addition # 471| -1: [TypeMention] Num #-----| 2: (Parameters) # 471| 0: [Parameter] a @@ -2146,10 +2146,10 @@ expressions.cs: # 474| 1: [ParameterAccess] access to parameter c # 475| 2: [ReturnStmt] return ...; # 475| 0: [LocalVariableAccess] access to local variable result -# 477| 7: [Class] Num -# 479| 4: [Field] value +# 477| 8: [Class] Num +# 479| 5: [Field] value # 479| -1: [TypeMention] int -# 481| 5: [InstanceConstructor] Num +# 481| 6: [InstanceConstructor] Num #-----| 2: (Parameters) # 481| 0: [Parameter] value # 481| -1: [TypeMention] int @@ -2159,7 +2159,7 @@ expressions.cs: # 483| 0: [FieldAccess] access to field value # 483| -1: [ThisAccess] this access # 483| 1: [ParameterAccess] access to parameter value -# 486| 6: [AddOperator] + +# 486| 7: [AddOperator] + # 486| -1: [TypeMention] Num #-----| 2: (Parameters) # 486| 0: [Parameter] c1 @@ -2175,12 +2175,12 @@ expressions.cs: # 488| -1: [ParameterAccess] access to parameter c1 # 488| 1: [FieldAccess] access to field value # 488| -1: [ParameterAccess] access to parameter c2 -# 492| 8: [DelegateType] MyDelegate +# 492| 9: [DelegateType] MyDelegate #-----| 2: (Parameters) # 492| 0: [Parameter] e # 492| -1: [TypeMention] string # 495| 19: [Class] ExpressionDepth -# 497| 5: [Field] d +# 497| 6: [Field] d # 497| -1: [TypeMention] int # 497| 1: [AddExpr] ... + ... # 497| 0: [AddExpr] ... + ... @@ -2342,7 +2342,7 @@ expressions.cs: # 498| 1: [IntLiteral] 1 # 498| 1: [IntLiteral] 1 # 501| 20: [Class] TupleExprs -# 503| 5: [Method] Test +# 503| 6: [Method] Test # 503| -1: [TypeMention] Void # 504| 4: [BlockStmt] {...} # 505| 0: [LocalVariableDeclStmt] ... ...; @@ -2390,28 +2390,28 @@ expressions.cs: # 512| 1: [DefaultAttribute] [InlineArray(...)] # 512| -1: [TypeMention] InlineArrayAttribute # 512| 0: [IntLiteral] 10 -# 515| 5: [Field] myInlineArrayElements +# 515| 6: [Field] myInlineArrayElements # 515| -1: [TypeMention] int # 518| 22: [Class] ClassC1 -# 518| 4: [InstanceConstructor,PrimaryConstructor] ClassC1 +# 518| 5: [InstanceConstructor,PrimaryConstructor] ClassC1 #-----| 2: (Parameters) # 518| 0: [Parameter] oc1 # 518| -1: [TypeMention] object # 520| 23: [Class] ClassC2 #-----| 3: (Base types) # 520| 0: [TypeMention] ClassC1 -# 520| 4: [InstanceConstructor,PrimaryConstructor] ClassC2 +# 520| 5: [InstanceConstructor,PrimaryConstructor] ClassC2 #-----| 2: (Parameters) # 520| 0: [Parameter] oc2 # 520| -1: [TypeMention] object # 520| 3: [ConstructorInitializer] call to constructor ClassC1 # 520| 0: [ParameterAccess] access to parameter oc2 # 522| 24: [Class] SuppressNullableWarning -# 525| 5: [Method] Api +# 525| 6: [Method] Api # 525| -1: [TypeMention] object # 525| 4: [ObjectCreation] object creation of type Object # 525| 0: [TypeMention] object -# 527| 6: [Method] Test +# 527| 7: [Method] Test # 527| -1: [TypeMention] Void #-----| 2: (Parameters) # 527| 0: [Parameter] arg0 diff --git a/csharp/ql/test/library-tests/expressions/QualifiableExpr.expected b/csharp/ql/test/library-tests/expressions/QualifiableExpr.expected index c85d73bd7f7c..8030da8c4fa9 100644 --- a/csharp/ql/test/library-tests/expressions/QualifiableExpr.expected +++ b/csharp/ql/test/library-tests/expressions/QualifiableExpr.expected @@ -1,12 +1,17 @@ +| FoldedLiterals.cs:1:7:1:20 | call to method | FoldedLiterals.cs:1:7:1:20 | this access | +| MethodAccess.cs:3:7:3:18 | call to method | MethodAccess.cs:3:7:3:18 | this access | | MethodAccess.cs:8:20:8:21 | access to local function M1 | MethodAccess.cs:8:20:8:21 | this access | | MethodAccess.cs:9:13:9:14 | access to method M2 | MethodAccess.cs:9:13:9:14 | this access | | MethodAccess.cs:10:13:10:19 | access to method M2 | MethodAccess.cs:10:13:10:16 | this access | | MethodAccess.cs:12:13:12:27 | access to method M3 | MethodAccess.cs:12:13:12:24 | access to type MethodAccess | +| Qualifiers.cs:3:7:3:16 | call to method | Qualifiers.cs:3:7:3:16 | this access | | Qualifiers.cs:7:21:7:35 | call to method Instance | Qualifiers.cs:7:21:7:35 | this access | | Qualifiers.cs:9:22:9:42 | call to method Instance | Qualifiers.cs:9:22:9:25 | this access | +| ReducedExpression.cs:2:7:2:18 | call to method | ReducedExpression.cs:2:7:2:18 | this access | | expressions.cs:45:20:45:20 | access to field f | expressions.cs:45:20:45:20 | this access | | expressions.cs:51:13:51:34 | access to field name | expressions.cs:51:13:51:29 | access to type Class | | expressions.cs:52:13:52:23 | call to method Foo | expressions.cs:52:13:52:17 | access to type Class | +| expressions.cs:58:19:58:23 | call to method | expressions.cs:58:19:58:23 | this access | | expressions.cs:64:20:64:27 | access to property Length | expressions.cs:64:20:64:20 | access to parameter s | | expressions.cs:75:35:75:46 | call to method Equals | expressions.cs:75:35:75:35 | access to parameter s | | expressions.cs:76:30:76:30 | access to field f | expressions.cs:76:30:76:30 | this access | @@ -20,6 +25,10 @@ | expressions.cs:85:41:85:51 | access to indexer | expressions.cs:85:41:85:44 | this access | | expressions.cs:87:13:87:20 | access to array element | expressions.cs:87:13:87:17 | access to local variable array | | expressions.cs:89:13:89:26 | access to array element | expressions.cs:89:13:89:23 | access to local variable inlinearray | +| expressions.cs:104:15:104:15 | call to method | expressions.cs:104:15:104:15 | this access | +| expressions.cs:108:15:108:15 | call to method | expressions.cs:108:15:108:15 | this access | +| expressions.cs:133:13:133:18 | call to method | expressions.cs:133:13:133:18 | this access | +| expressions.cs:134:13:134:18 | call to method | expressions.cs:134:13:134:18 | this access | | expressions.cs:138:17:138:22 | access to field f | expressions.cs:138:17:138:20 | this access | | expressions.cs:139:17:139:55 | call to method MainAccesses | expressions.cs:139:17:139:20 | base access | | expressions.cs:149:13:149:40 | call to method WriteLine | expressions.cs:149:13:149:19 | access to type Console | @@ -33,9 +42,13 @@ | expressions.cs:191:36:191:38 | access to method G | expressions.cs:191:36:191:36 | access to type X | | expressions.cs:198:25:198:37 | access to local function LocalFunction | expressions.cs:198:25:198:37 | this access | | expressions.cs:199:19:199:31 | access to local function LocalFunction | expressions.cs:199:19:199:31 | this access | +| expressions.cs:207:11:207:11 | call to method | expressions.cs:207:11:207:11 | this access | +| expressions.cs:216:18:216:18 | call to method | expressions.cs:216:18:216:18 | this access | +| expressions.cs:227:18:227:23 | call to method | expressions.cs:227:18:227:23 | this access | | expressions.cs:234:17:234:21 | access to event Click | expressions.cs:234:17:234:21 | this access | | expressions.cs:235:17:235:21 | access to event Click | expressions.cs:235:17:235:21 | this access | | expressions.cs:240:13:240:17 | access to event Click | expressions.cs:240:13:240:17 | this access | +| expressions.cs:250:16:250:26 | call to method | expressions.cs:250:16:250:26 | this access | | expressions.cs:252:13:252:20 | access to field OkButton | expressions.cs:252:13:252:20 | this access | | expressions.cs:253:13:253:20 | access to field OkButton | expressions.cs:253:13:253:20 | this access | | expressions.cs:253:13:253:26 | access to event Click | expressions.cs:253:13:253:20 | access to field OkButton | @@ -44,30 +57,48 @@ | expressions.cs:255:13:255:24 | access to field CancelButton | expressions.cs:255:13:255:24 | this access | | expressions.cs:255:13:255:30 | access to event Click | expressions.cs:255:13:255:24 | access to field CancelButton | | expressions.cs:255:52:255:68 | access to method CancelButtonClick | expressions.cs:255:52:255:68 | this access | +| expressions.cs:271:16:271:24 | call to method | expressions.cs:271:16:271:24 | this access | | expressions.cs:279:44:279:52 | access to property Length | expressions.cs:279:44:279:45 | access to parameter iv | | expressions.cs:280:33:280:41 | access to property Length | expressions.cs:280:33:280:34 | access to parameter iv | | expressions.cs:281:17:281:23 | access to indexer | expressions.cs:281:17:281:20 | access to local variable temp | | expressions.cs:281:27:281:31 | access to indexer | expressions.cs:281:27:281:28 | access to parameter iv | +| expressions.cs:292:11:292:27 | call to method | expressions.cs:292:11:292:27 | this access | +| expressions.cs:306:19:306:23 | call to method | expressions.cs:306:19:306:23 | this access | +| expressions.cs:311:16:311:20 | call to method | expressions.cs:311:16:311:20 | this access | | expressions.cs:315:13:315:22 | access to field value | expressions.cs:315:13:315:16 | this access | | expressions.cs:320:20:320:26 | access to field value | expressions.cs:320:20:320:20 | access to parameter d | +| expressions.cs:330:11:330:32 | call to method | expressions.cs:330:11:330:32 | this access | +| expressions.cs:341:18:341:22 | call to method | expressions.cs:341:18:341:22 | this access | | expressions.cs:346:37:346:37 | access to field x | expressions.cs:346:37:346:37 | this access | | expressions.cs:346:48:346:48 | access to field x | expressions.cs:346:48:346:48 | this access | | expressions.cs:347:37:347:37 | access to field y | expressions.cs:347:37:347:37 | this access | | expressions.cs:347:48:347:48 | access to field y | expressions.cs:347:48:347:48 | this access | +| expressions.cs:351:18:351:26 | call to method | expressions.cs:351:18:351:26 | this access | | expressions.cs:356:40:356:41 | access to field p1 | expressions.cs:356:40:356:41 | this access | | expressions.cs:356:52:356:53 | access to field p1 | expressions.cs:356:52:356:53 | this access | | expressions.cs:357:40:357:41 | access to field p2 | expressions.cs:357:40:357:41 | this access | | expressions.cs:357:52:357:53 | access to field p2 | expressions.cs:357:52:357:53 | this access | +| expressions.cs:361:18:361:27 | call to method | expressions.cs:361:18:361:27 | this access | | expressions.cs:364:15:364:16 | access to field p1 | expressions.cs:364:15:364:16 | this access | | expressions.cs:365:15:365:16 | access to field p2 | expressions.cs:365:15:365:16 | this access | | expressions.cs:367:40:367:41 | access to field p1 | expressions.cs:367:40:367:41 | this access | | expressions.cs:368:40:368:41 | access to field p2 | expressions.cs:368:40:368:41 | this access | +| expressions.cs:372:18:372:24 | call to method | expressions.cs:372:18:372:24 | this access | | expressions.cs:376:22:376:33 | access to field phoneNumbers | expressions.cs:376:22:376:33 | this access | | expressions.cs:378:43:378:46 | access to field name | expressions.cs:378:43:378:46 | this access | | expressions.cs:378:57:378:60 | access to field name | expressions.cs:378:57:378:60 | this access | | expressions.cs:379:57:379:68 | access to field phoneNumbers | expressions.cs:379:57:379:68 | this access | +| expressions.cs:383:18:383:30 | call to method | expressions.cs:383:18:383:30 | this access | | expressions.cs:455:29:455:47 | call to method WriteLine | expressions.cs:455:29:455:35 | access to type Console | +| expressions.cs:463:11:463:23 | call to method | expressions.cs:463:11:463:23 | this access | +| expressions.cs:481:20:481:22 | call to method | expressions.cs:481:20:481:22 | this access | | expressions.cs:483:17:483:26 | access to field value | expressions.cs:483:17:483:20 | this access | | expressions.cs:488:32:488:39 | access to field value | expressions.cs:488:32:488:33 | access to parameter c1 | | expressions.cs:488:43:488:50 | access to field value | expressions.cs:488:43:488:44 | access to parameter c2 | +| expressions.cs:495:11:495:25 | call to method | expressions.cs:495:11:495:25 | this access | +| expressions.cs:501:11:501:20 | call to method | expressions.cs:501:11:501:20 | this access | +| expressions.cs:513:12:513:24 | call to method | expressions.cs:513:12:513:24 | this access | +| expressions.cs:518:11:518:17 | call to method | expressions.cs:518:11:518:17 | this access | +| expressions.cs:520:11:520:17 | call to method | expressions.cs:520:11:520:17 | this access | +| expressions.cs:522:11:522:33 | call to method | expressions.cs:522:11:522:33 | this access | | expressions.cs:530:21:530:25 | call to method Api | expressions.cs:530:21:530:25 | this access | diff --git a/csharp/ql/test/library-tests/extension-method-call/ExtensionMethodCalls.expected b/csharp/ql/test/library-tests/extension-method-call/ExtensionMethodCalls.expected index ae15431d9649..0407c9b3e397 100644 --- a/csharp/ql/test/library-tests/extension-method-call/ExtensionMethodCalls.expected +++ b/csharp/ql/test/library-tests/extension-method-call/ExtensionMethodCalls.expected @@ -1,6 +1,7 @@ methodCallTargets | methods.cs:14:60:14:73 | call to method Ext3`1 | methods.cs:14:28:14:34 | Ext3`1 | Ext3(T, int) | | methods.cs:16:60:16:74 | call to method Ext4`1 | methods.cs:16:28:16:34 | Ext4`1 | Ext4(T, int) | +| methods.cs:19:18:19:24 | call to method | methods.cs:19:18:19:24 | | () | | methods.cs:23:13:23:22 | call to method Ext0 | methods.cs:8:28:8:34 | Ext0 | Ext0(string, int) | | methods.cs:24:13:24:27 | call to method Ext0 | methods.cs:8:28:8:34 | Ext0 | Ext0(string, int) | | methods.cs:25:13:25:30 | call to method Ext0 | methods.cs:8:28:8:34 | Ext0 | Ext0(string, double) | diff --git a/csharp/ql/test/library-tests/fields/PrintAst.expected b/csharp/ql/test/library-tests/fields/PrintAst.expected index 4f33d662a06d..e9e6ad49a2ba 100644 --- a/csharp/ql/test/library-tests/fields/PrintAst.expected +++ b/csharp/ql/test/library-tests/fields/PrintAst.expected @@ -1,56 +1,56 @@ fields.cs: # 5| [NamespaceDeclaration] namespace ... { ... } # 7| 1: [Class] A -# 10| 6: [Field] X +# 10| 7: [Field] X # 10| -1: [TypeMention] int # 10| 1: [IntLiteral] 1 -# 10| 7: [Field] Y +# 10| 8: [Field] Y # 10| -1: [TypeMention] int -# 10| 8: [Field] Z +# 10| 9: [Field] Z # 10| -1: [TypeMention] int # 10| 1: [IntLiteral] 100 # 13| 2: [Class] B -# 15| 6: [Field] X +# 15| 7: [Field] X # 15| -1: [TypeMention] int # 15| 1: [IntLiteral] 1 -# 16| 7: [Field] Y +# 16| 8: [Field] Y # 16| -1: [TypeMention] int -# 17| 8: [Field] Z +# 17| 9: [Field] Z # 17| -1: [TypeMention] int # 17| 1: [IntLiteral] 100 # 20| 3: [Class] C`1 #-----| 1: (Type parameters) # 20| 0: [TypeParameter] V -# 23| 5: [Field] count +# 23| 6: [Field] count # 23| -1: [TypeMention] int # 23| 1: [IntLiteral] 0 -# 25| 6: [InstanceConstructor] C +# 25| 7: [InstanceConstructor] C # 25| 4: [BlockStmt] {...} # 25| 0: [ExprStmt] ...; # 25| 0: [PostIncrExpr] ...++ # 25| 0: [FieldAccess] access to field count -# 27| 7: [Property] Count +# 27| 8: [Property] Count # 27| -1: [TypeMention] int # 27| 3: [Getter] get_Count # 27| 4: [BlockStmt] {...} # 27| 0: [ReturnStmt] return ...; # 27| 0: [FieldAccess] access to field count # 31| 4: [Class] Application -# 34| 6: [Field] finished +# 34| 7: [Field] finished # 34| -1: [TypeMention] bool -# 35| 7: [Field] x +# 35| 8: [Field] x # 35| -1: [TypeMention] double # 35| 1: [MethodCall] call to method Sqrt # 35| -1: [TypeAccess] access to type Math # 35| 0: [TypeMention] Math # 35| 0: [DoubleLiteral] 2 -# 36| 8: [Field] i +# 36| 9: [Field] i # 36| -1: [TypeMention] int # 36| 1: [IntLiteral] 100 -# 37| 9: [Field] s +# 37| 10: [Field] s # 37| -1: [TypeMention] string # 37| 1: [StringLiteralUtf16] "Hello" -# 39| 10: [Method] Main +# 39| 11: [Method] Main # 39| -1: [TypeMention] Void # 40| 4: [BlockStmt] {...} # 41| 0: [LocalVariableDeclStmt] ... ...; @@ -93,7 +93,7 @@ fields.cs: # 45| 0: [TypeMention] C # 45| 1: [TypeMention] int # 50| 5: [Class] Color -# 53| 5: [Field] Black +# 53| 6: [Field] Black # 53| -1: [TypeMention] Color # 53| 1: [ObjectCreation] object creation of type Color # 53| -1: [TypeMention] Color @@ -103,7 +103,7 @@ fields.cs: # 53| 1: [IntLiteral] 0 # 53| 2: [CastExpr] (...) ... # 53| 1: [IntLiteral] 0 -# 54| 6: [Field] White +# 54| 7: [Field] White # 54| -1: [TypeMention] Color # 54| 1: [ObjectCreation] object creation of type Color # 54| -1: [TypeMention] Color @@ -113,7 +113,7 @@ fields.cs: # 54| 1: [IntLiteral] 255 # 54| 2: [CastExpr] (...) ... # 54| 1: [IntLiteral] 255 -# 56| 7: [InstanceConstructor] Color +# 56| 8: [InstanceConstructor] Color #-----| 2: (Parameters) # 56| 0: [Parameter] r # 56| -1: [TypeMention] byte @@ -123,30 +123,30 @@ fields.cs: # 56| -1: [TypeMention] byte # 56| 4: [BlockStmt] {...} # 60| 6: [Class] TestBindings -# 63| 6: [Field] a +# 63| 7: [Field] a # 63| -1: [TypeMention] int # 63| 1: [AddExpr] ... + ... # 63| 0: [FieldAccess] access to field b # 63| 1: [IntLiteral] 1 -# 64| 7: [Field] b +# 64| 8: [Field] b # 64| -1: [TypeMention] int # 64| 1: [AddExpr] ... + ... # 64| 0: [FieldAccess] access to field a # 64| 1: [IntLiteral] 1 # 70| [NamespaceDeclaration] namespace ... { ... } # 72| 1: [Class] A -# 74| 5: [Field] X +# 74| 6: [Field] X # 74| -1: [TypeMention] int # 74| 1: [AddExpr] ... + ... # 74| 0: [MemberConstantAccess] access to constant Z # 74| -1: [TypeAccess] access to type B # 74| 0: [TypeMention] B # 74| 1: [IntLiteral] 1 -# 75| 6: [Field] Y +# 75| 7: [Field] Y # 75| -1: [TypeMention] int # 75| 1: [IntLiteral] 10 # 78| 2: [Class] B -# 80| 5: [Field] Z +# 80| 6: [Field] Z # 80| -1: [TypeMention] int # 80| 1: [AddExpr] ... + ... # 80| 0: [MemberConstantAccess] access to constant Y @@ -154,13 +154,13 @@ fields.cs: # 80| 0: [TypeMention] A # 80| 1: [IntLiteral] 1 # 83| 3: [Class] C -# 85| 4: [Field] Foo +# 85| 5: [Field] Foo # 85| -1: [TypeMention] int # 85| 1: [IntLiteral] 1 -# 86| 5: [Field] x +# 86| 6: [Field] x # 86| -1: [TypeMention] long? # 86| 1: [TypeMention] long -# 87| 6: [InstanceConstructor] C +# 87| 7: [InstanceConstructor] C # 88| 4: [BlockStmt] {...} # 89| 0: [ExprStmt] ...; # 89| 0: [AssignExpr] ... = ... @@ -191,12 +191,12 @@ fields.cs: # 92| 1: [CastExpr] (...) ... # 92| 1: [MemberConstantAccess] access to constant Foo # 96| 4: [Class] D -# 98| 4: [InstanceConstructor] D +# 98| 5: [InstanceConstructor] D #-----| 2: (Parameters) # 98| 0: [Parameter] d # 98| -1: [TypeMention] int # 99| 4: [BlockStmt] {...} -# 101| 5: [ImplicitConversionOperator] implicit conversion +# 101| 6: [ImplicitConversionOperator] implicit conversion # 101| -1: [TypeMention] D #-----| 2: (Parameters) # 101| 0: [Parameter] d diff --git a/csharp/ql/test/library-tests/generics/Generics.expected b/csharp/ql/test/library-tests/generics/Generics.expected index d390859b4df9..8e82103a19e5 100644 --- a/csharp/ql/test/library-tests/generics/Generics.expected +++ b/csharp/ql/test/library-tests/generics/Generics.expected @@ -31,6 +31,7 @@ test14 test15 | generics.cs:7:23:7:40 | GenericDelegate | test16 +| generics.cs:135:11:135:16 | Subtle | generics.cs:135:11:135:16 | | | generics.cs:135:11:135:16 | Subtle | generics.cs:138:21:138:25 | fs`1 | | generics.cs:135:11:135:16 | Subtle | generics.cs:140:21:140:25 | fs`1 | | generics.cs:135:11:135:16 | Subtle | generics.cs:142:21:142:22 | fs | diff --git a/csharp/ql/test/library-tests/generics/Generics.ql b/csharp/ql/test/library-tests/generics/Generics.ql index ab1f0af982a8..95ae84ebd9a6 100644 --- a/csharp/ql/test/library-tests/generics/Generics.ql +++ b/csharp/ql/test/library-tests/generics/Generics.ql @@ -118,7 +118,7 @@ query predicate test15(ConstructedDelegateType d) { query predicate test16(Class c, Method m) { c.hasName("Subtle") and - count(c.getAMethod()) = 3 and + count(c.getAMethod()) = 4 and m = c.getAMethod() } diff --git a/csharp/ql/test/library-tests/generics/PrintAst.expected b/csharp/ql/test/library-tests/generics/PrintAst.expected index 3653b3b7a2d7..0d50888edd30 100644 --- a/csharp/ql/test/library-tests/generics/PrintAst.expected +++ b/csharp/ql/test/library-tests/generics/PrintAst.expected @@ -2,13 +2,13 @@ Nesting.cs: # 1| [Class] A`1 #-----| 1: (Type parameters) # 1| 0: [TypeParameter] T1 -# 3| 5: [Method] MA1 +# 3| 6: [Method] MA1 # 3| -1: [TypeMention] Void #-----| 2: (Parameters) # 3| 0: [Parameter] x # 3| -1: [TypeMention] T1 # 3| 4: [BlockStmt] {...} -# 4| 6: [Method] MA2`1 +# 4| 7: [Method] MA2`1 # 4| -1: [TypeMention] Void #-----| 1: (Type parameters) # 4| 0: [TypeParameter] T2 @@ -18,10 +18,10 @@ Nesting.cs: # 4| 1: [Parameter] y # 4| -1: [TypeMention] T2 # 4| 4: [BlockStmt] {...} -# 6| 7: [Class] B`1 +# 6| 8: [Class] B`1 #-----| 1: (Type parameters) # 6| 0: [TypeParameter] T3 -# 8| 5: [Method] MB1 +# 8| 6: [Method] MB1 # 8| -1: [TypeMention] Void #-----| 2: (Parameters) # 8| 0: [Parameter] x @@ -29,7 +29,7 @@ Nesting.cs: # 8| 1: [Parameter] y # 8| -1: [TypeMention] T3 # 8| 4: [BlockStmt] {...} -# 9| 6: [Method] MB2`1 +# 9| 7: [Method] MB2`1 # 9| -1: [TypeMention] Void #-----| 1: (Type parameters) # 9| 0: [TypeParameter] T4 @@ -41,14 +41,14 @@ Nesting.cs: # 9| 2: [Parameter] z # 9| -1: [TypeMention] T4 # 9| 4: [BlockStmt] {...} -# 12| 8: [Class] C -# 14| 5: [Method] MC1 +# 12| 9: [Class] C +# 14| 6: [Method] MC1 # 14| -1: [TypeMention] Void #-----| 2: (Parameters) # 14| 0: [Parameter] x # 14| -1: [TypeMention] T1 # 14| 4: [BlockStmt] {...} -# 15| 6: [Method] MC2`1 +# 15| 7: [Method] MC2`1 # 15| -1: [TypeMention] Void #-----| 1: (Type parameters) # 15| 0: [TypeParameter] T5 @@ -58,10 +58,10 @@ Nesting.cs: # 15| 1: [Parameter] y # 15| -1: [TypeMention] T5 # 15| 4: [BlockStmt] {...} -# 17| 7: [Class] D`1 +# 17| 8: [Class] D`1 #-----| 1: (Type parameters) # 17| 0: [TypeParameter] T6 -# 19| 5: [Method] MD1 +# 19| 6: [Method] MD1 # 19| -1: [TypeMention] Void #-----| 2: (Parameters) # 19| 0: [Parameter] x @@ -69,7 +69,7 @@ Nesting.cs: # 19| 1: [Parameter] y # 19| -1: [TypeMention] T6 # 19| 4: [BlockStmt] {...} -# 20| 6: [Method] MD2`1 +# 20| 7: [Method] MD2`1 # 20| -1: [TypeMention] Void #-----| 1: (Type parameters) # 20| 0: [TypeParameter] T7 @@ -81,7 +81,7 @@ Nesting.cs: # 20| 2: [Parameter] z # 20| -1: [TypeMention] T7 # 20| 4: [BlockStmt] {...} -# 24| 9: [Method] Construct +# 24| 10: [Method] Construct # 24| -1: [TypeMention] Void # 25| 4: [BlockStmt] {...} # 26| 0: [LocalVariableDeclStmt] ... ...; @@ -244,7 +244,7 @@ generics.cs: # 13| 3: [Class] A`1 #-----| 1: (Type parameters) # 13| 0: [TypeParameter] T -# 16| 5: [DelegateType] GenericDelegateInGenericClass`1 +# 16| 6: [DelegateType] GenericDelegateInGenericClass`1 #-----| 1: (Type parameters) # 16| 0: [TypeParameter] U #-----| 2: (Parameters) @@ -252,7 +252,7 @@ generics.cs: # 16| -1: [TypeMention] T # 16| 1: [Parameter] u # 16| -1: [TypeMention] U -# 18| 6: [Method] bar`1 +# 18| 7: [Method] bar`1 # 18| -1: [TypeMention] T #-----| 1: (Type parameters) # 18| 0: [TypeParameter] X @@ -271,25 +271,25 @@ generics.cs: # 22| 4: [Class] B`1 #-----| 1: (Type parameters) # 22| 0: [TypeParameter] T -# 25| 5: [Field] at +# 25| 6: [Field] at # 25| -1: [TypeMention] A # 25| 1: [TypeMention] T -# 27| 6: [Field] name +# 27| 7: [Field] name # 27| -1: [TypeMention] string -# 29| 7: [Method] foo +# 29| 8: [Method] foo # 29| -1: [TypeMention] Void # 29| 4: [BlockStmt] {...} -# 31| 8: [Method] fooParams +# 31| 9: [Method] fooParams # 31| -1: [TypeMention] Void #-----| 2: (Parameters) # 31| 0: [Parameter] ts # 31| -1: [TypeMention] T[] # 31| 1: [TypeMention] T # 31| 4: [BlockStmt] {...} -# 33| 9: [Method] staticFoo +# 33| 10: [Method] staticFoo # 33| -1: [TypeMention] Void # 33| 4: [BlockStmt] {...} -# 35| 10: [Property] Name +# 35| 11: [Property] Name # 35| -1: [TypeMention] string # 35| 3: [Getter] get_Name # 35| 4: [BlockStmt] {...} @@ -303,7 +303,7 @@ generics.cs: # 35| 0: [AssignExpr] ... = ... # 35| 0: [FieldAccess] access to field name # 35| 1: [ParameterAccess] access to parameter value -# 37| 11: [Event] myEvent +# 37| 12: [Event] myEvent # 37| -1: [TypeMention] GenericDelegate # 37| 1: [TypeMention] T # 37| 3: [AddEventAccessor] add_myEvent @@ -312,7 +312,7 @@ generics.cs: # 37| 4: [RemoveEventAccessor] remove_myEvent #-----| 2: (Parameters) # 37| 0: [Parameter] value -# 39| 12: [IncrementOperator] ++ +# 39| 13: [IncrementOperator] ++ # 39| -1: [TypeMention] B # 39| 1: [TypeMention] T #-----| 2: (Parameters) @@ -324,9 +324,9 @@ generics.cs: # 41| 0: [ObjectCreation] object creation of type B`1 # 41| 0: [TypeMention] B # 41| 1: [TypeMention] T -# 44| 13: [Destructor] ~B +# 44| 14: [Destructor] ~B # 44| 4: [BlockStmt] {...} -# 45| 14: [Method] f`1 +# 45| 15: [Method] f`1 # 45| -1: [TypeMention] Void #-----| 1: (Type parameters) # 45| 0: [TypeParameter] X @@ -339,17 +339,17 @@ generics.cs: #-----| 1: (Type parameters) # 48| 0: [TypeParameter] T1 # 48| 1: [TypeParameter] T2 -# 51| 5: [Class] Inner`2 +# 51| 6: [Class] Inner`2 #-----| 1: (Type parameters) # 51| 0: [TypeParameter] U1 # 51| 1: [TypeParameter] U2 -# 54| 5: [Field] t +# 54| 6: [Field] t # 54| -1: [TypeMention] T1 -# 55| 6: [Field] myFunc +# 55| 7: [Field] myFunc # 55| -1: [TypeMention] Func # 55| 1: [TypeMention] U1 # 55| 2: [TypeMention] T1 -# 56| 7: [Method] MyMethod`2 +# 56| 8: [Method] MyMethod`2 # 56| -1: [TypeMention] Void #-----| 1: (Type parameters) # 56| 0: [TypeParameter] W1 @@ -368,13 +368,13 @@ generics.cs: # 60| 6: [Class] Grid`1 #-----| 1: (Type parameters) # 60| 0: [TypeParameter] T -# 63| 5: [Field] NumRows +# 63| 6: [Field] NumRows # 63| -1: [TypeMention] int # 63| 1: [IntLiteral] 26 -# 64| 6: [Field] NumCols +# 64| 7: [Field] NumCols # 64| -1: [TypeMention] int # 64| 1: [IntLiteral] 10 -# 66| 7: [Field] cells +# 66| 8: [Field] cells # 66| -1: [TypeMention] T[,] # 66| 1: [TypeMention] T # 66| 1: [ArrayCreation] array creation of type T[,] @@ -382,7 +382,7 @@ generics.cs: # 66| 1: [TypeMention] T # 66| 0: [MemberConstantAccess] access to constant NumRows # 66| 1: [MemberConstantAccess] access to constant NumCols -# 68| 8: [Indexer] Item +# 68| 9: [Indexer] Item # 68| -1: [TypeMention] int #-----| 1: (Parameters) # 68| 0: [Parameter] i @@ -393,7 +393,7 @@ generics.cs: # 70| 4: [BlockStmt] {...} # 70| 0: [ReturnStmt] return ...; # 70| 0: [ParameterAccess] access to parameter i -# 73| 9: [Indexer] Item +# 73| 10: [Indexer] Item # 73| -1: [TypeMention] T #-----| 1: (Parameters) # 73| 0: [Parameter] c @@ -502,7 +502,7 @@ generics.cs: # 99| 1: [ParameterAccess] access to parameter col # 99| 1: [ParameterAccess] access to parameter value # 105| 7: [Class] Test -# 108| 5: [Method] Main +# 108| 6: [Method] Main # 108| -1: [TypeMention] Void # 109| 4: [BlockStmt] {...} # 110| 0: [LocalVariableDeclStmt] ... ...; @@ -605,7 +605,7 @@ generics.cs: # 128| 0: [ObjectCreation] object creation of type Test # 128| 0: [TypeMention] Test # 128| 1: [IntLiteral] 2 -# 131| 6: [Method] f +# 131| 7: [Method] f # 131| -1: [TypeMention] string #-----| 2: (Parameters) # 131| 0: [Parameter] s @@ -614,7 +614,7 @@ generics.cs: # 131| 0: [ReturnStmt] return ...; # 131| 0: [ParameterAccess] access to parameter s # 135| 8: [Class] Subtle -# 138| 5: [Method] fs`1 +# 138| 6: [Method] fs`1 # 138| -1: [TypeMention] Void #-----| 1: (Type parameters) # 138| 0: [TypeParameter] X @@ -622,7 +622,7 @@ generics.cs: # 138| 0: [Parameter] i # 138| -1: [TypeMention] int # 138| 4: [BlockStmt] {...} -# 140| 6: [Method] fs`1 +# 140| 7: [Method] fs`1 # 140| -1: [TypeMention] Void #-----| 1: (Type parameters) # 140| 0: [TypeParameter] X @@ -632,7 +632,7 @@ generics.cs: # 140| 1: [Parameter] j # 140| -1: [TypeMention] int # 140| 4: [BlockStmt] {...} -# 142| 7: [Method] fs +# 142| 8: [Method] fs # 142| -1: [TypeMention] Void #-----| 2: (Parameters) # 142| 0: [Parameter] i @@ -641,15 +641,15 @@ generics.cs: # 146| 9: [Class] Param`1 #-----| 1: (Type parameters) # 146| 0: [TypeParameter] T -# 148| 5: [Enum] E +# 148| 6: [Enum] E # 148| 5: [Field] x # 151| 10: [Class] ConstructedMethods -# 153| 7: [Method] CM1`1 +# 153| 8: [Method] CM1`1 # 153| -1: [TypeMention] Void #-----| 1: (Type parameters) # 153| 0: [TypeParameter] T # 153| 4: [BlockStmt] {...} -# 154| 10: [Method] CM2`1 +# 154| 11: [Method] CM2`1 # 154| -1: [TypeMention] T #-----| 1: (Type parameters) # 154| 0: [TypeParameter] T @@ -659,10 +659,10 @@ generics.cs: # 154| 4: [BlockStmt] {...} # 154| 0: [ReturnStmt] return ...; # 154| 0: [ParameterAccess] access to parameter t -# 156| 13: [Class] Class`1 +# 156| 14: [Class] Class`1 #-----| 1: (Type parameters) # 156| 0: [TypeParameter] T1 -# 158| 5: [Method] CM3`1 +# 158| 6: [Method] CM3`1 # 158| -1: [TypeMention] T2 #-----| 1: (Type parameters) # 158| 0: [TypeParameter] T2 @@ -674,10 +674,10 @@ generics.cs: # 158| 4: [BlockStmt] {...} # 158| 0: [ReturnStmt] return ...; # 158| 0: [ParameterAccess] access to parameter t -# 161| 14: [Method] NonCM +# 161| 15: [Method] NonCM # 161| -1: [TypeMention] Void # 161| 4: [BlockStmt] {...} -# 163| 15: [Method] CM +# 163| 16: [Method] CM # 163| -1: [TypeMention] Void # 164| 4: [BlockStmt] {...} # 165| 0: [ExprStmt] ...; @@ -718,14 +718,14 @@ generics.cs: #-----| 3: (Base types) # 179| 1: [TypeMention] Interface # 179| 1: [TypeMention] T -# 181| 5: [Method] set +# 181| 6: [Method] set # 181| -1: [TypeMention] Void #-----| 2: (Parameters) # 181| 0: [Parameter] t # 181| -1: [TypeMention] T # 181| 4: [BlockStmt] {...} # 184| 13: [Class] InheritanceTest -# 186| 5: [Field] member +# 186| 6: [Field] member # 186| -1: [TypeMention] Inheritance # 186| 1: [TypeMention] int # 189| 14: [Interface] Interface2`2 diff --git a/csharp/ql/test/library-tests/goto/Goto1.expected b/csharp/ql/test/library-tests/goto/Goto1.expected index 0baaf5ef723a..137c1b7241c4 100644 --- a/csharp/ql/test/library-tests/goto/Goto1.expected +++ b/csharp/ql/test/library-tests/goto/Goto1.expected @@ -1,6 +1,8 @@ | goto.cs:2:7:2:10 | call to constructor Object | goto.cs:2:7:2:10 | {...} | semmle.label | successor | -| goto.cs:2:7:2:10 | enter Goto | goto.cs:2:7:2:10 | call to constructor Object | semmle.label | successor | +| goto.cs:2:7:2:10 | call to method | goto.cs:2:7:2:10 | call to constructor Object | semmle.label | successor | +| goto.cs:2:7:2:10 | enter Goto | goto.cs:2:7:2:10 | this access | semmle.label | successor | | goto.cs:2:7:2:10 | exit Goto (normal) | goto.cs:2:7:2:10 | exit Goto | semmle.label | successor | +| goto.cs:2:7:2:10 | this access | goto.cs:2:7:2:10 | call to method | semmle.label | successor | | goto.cs:2:7:2:10 | {...} | goto.cs:2:7:2:10 | exit Goto (normal) | semmle.label | successor | | goto.cs:4:17:4:20 | enter Main | goto.cs:5:5:20:5 | {...} | semmle.label | successor | | goto.cs:4:17:4:20 | exit Main (normal) | goto.cs:4:17:4:20 | exit Main | semmle.label | successor | diff --git a/csharp/ql/test/library-tests/goto/PrintAst.expected b/csharp/ql/test/library-tests/goto/PrintAst.expected index a6ecfb8c3018..e90947ed979c 100644 --- a/csharp/ql/test/library-tests/goto/PrintAst.expected +++ b/csharp/ql/test/library-tests/goto/PrintAst.expected @@ -1,6 +1,6 @@ goto.cs: # 2| [Class] Goto -# 4| 5: [Method] Main +# 4| 6: [Method] Main # 4| -1: [TypeMention] Void # 5| 4: [BlockStmt] {...} # 6| 0: [BlockStmt] {...} diff --git a/csharp/ql/test/library-tests/implicittostring/implicitToString.expected b/csharp/ql/test/library-tests/implicittostring/implicitToString.expected index 14efebf23207..e42817cc3061 100644 --- a/csharp/ql/test/library-tests/implicittostring/implicitToString.expected +++ b/csharp/ql/test/library-tests/implicittostring/implicitToString.expected @@ -1,3 +1,8 @@ +| implicitToString.cs:3:14:3:33 | call to method | TestImplicitToString | +| implicitToString.cs:5:18:5:26 | call to method | Container | +| implicitToString.cs:13:18:13:27 | call to method | Container2 | +| implicitToString.cs:15:18:15:27 | call to method | Container3 | +| implicitToString.cs:17:18:17:37 | call to method | FormattableContainer | | implicitToString.cs:35:27:35:35 | call to method ToString | Container | | implicitToString.cs:37:22:37:30 | call to method ToString | Container | | implicitToString.cs:39:22:39:30 | call to method ToString | Container | diff --git a/csharp/ql/test/library-tests/indexers/PrintAst.expected b/csharp/ql/test/library-tests/indexers/PrintAst.expected index 6f9fde00e24f..93160309c79b 100644 --- a/csharp/ql/test/library-tests/indexers/PrintAst.expected +++ b/csharp/ql/test/library-tests/indexers/PrintAst.expected @@ -1,12 +1,12 @@ indexers.cs: # 5| [NamespaceDeclaration] namespace ... { ... } # 8| 1: [Class] BitArray -# 11| 4: [Field] bits +# 11| 5: [Field] bits # 11| -1: [TypeMention] Int32[] # 11| 1: [TypeMention] int -# 12| 5: [Field] length +# 12| 6: [Field] length # 12| -1: [TypeMention] int -# 14| 6: [InstanceConstructor] BitArray +# 14| 7: [InstanceConstructor] BitArray #-----| 2: (Parameters) # 14| 0: [Parameter] length # 14| -1: [TypeMention] int @@ -36,13 +36,13 @@ indexers.cs: # 19| 0: [FieldAccess] access to field length # 19| -1: [ThisAccess] this access # 19| 1: [ParameterAccess] access to parameter length -# 22| 7: [Property] Length +# 22| 8: [Property] Length # 22| -1: [TypeMention] int # 22| 3: [Getter] get_Length # 22| 4: [BlockStmt] {...} # 22| 0: [ReturnStmt] return ...; # 22| 0: [FieldAccess] access to field length -# 24| 8: [Indexer] Item +# 24| 9: [Indexer] Item # 24| -1: [TypeMention] bool #-----| 1: (Parameters) # 24| 0: [Parameter] index @@ -118,7 +118,7 @@ indexers.cs: # 46| 0: [IntLiteral] 1 # 46| 1: [ParameterAccess] access to parameter index # 53| 2: [Class] CountPrimes -# 56| 5: [Method] Count +# 56| 6: [Method] Count # 56| -1: [TypeMention] int #-----| 2: (Parameters) # 56| 0: [Parameter] max @@ -179,7 +179,7 @@ indexers.cs: # 66| 0: [LocalVariableAccess] access to local variable count # 69| 3: [ReturnStmt] return ...; # 69| 0: [LocalVariableAccess] access to local variable count -# 72| 6: [Method] Main +# 72| 7: [Method] Main # 72| -1: [TypeMention] Void #-----| 2: (Parameters) # 72| 0: [Parameter] args @@ -212,13 +212,13 @@ indexers.cs: # 76| 2: [CastExpr] (...) ... # 76| 1: [LocalVariableAccess] access to local variable max # 81| 3: [Class] Grid -# 84| 5: [Field] NumRows +# 84| 6: [Field] NumRows # 84| -1: [TypeMention] int # 84| 1: [IntLiteral] 26 -# 85| 6: [Field] NumCols +# 85| 7: [Field] NumCols # 85| -1: [TypeMention] int # 85| 1: [IntLiteral] 10 -# 87| 7: [Field] cells +# 87| 8: [Field] cells # 87| -1: [TypeMention] Int32[,] # 87| 1: [TypeMention] int # 87| 1: [ArrayCreation] array creation of type Int32[,] @@ -226,7 +226,7 @@ indexers.cs: # 87| 1: [TypeMention] int # 87| 0: [MemberConstantAccess] access to constant NumRows # 87| 1: [MemberConstantAccess] access to constant NumCols -# 89| 8: [Indexer] Item +# 89| 9: [Indexer] Item # 89| -1: [TypeMention] int #-----| 1: (Parameters) # 89| 0: [Parameter] c @@ -335,7 +335,7 @@ indexers.cs: # 115| 1: [ParameterAccess] access to parameter col # 115| 1: [ParameterAccess] access to parameter value # 121| 4: [Class] DuplicateIndexerSignatures -# 123| 5: [Indexer] Item +# 123| 6: [Indexer] Item # 123| -1: [TypeMention] bool #-----| 1: (Parameters) # 123| 0: [Parameter] index @@ -346,7 +346,7 @@ indexers.cs: # 125| 4: [BlockStmt] {...} # 125| 0: [ReturnStmt] return ...; # 125| 0: [BoolLiteral] false -# 128| 6: [Indexer] Item +# 128| 7: [Indexer] Item # 128| -1: [TypeMention] int #-----| 1: (Parameters) # 128| 0: [Parameter] c diff --git a/csharp/ql/test/library-tests/initializers/PrintAst.expected b/csharp/ql/test/library-tests/initializers/PrintAst.expected index 29b7ca47003e..f59bb2f135f5 100644 --- a/csharp/ql/test/library-tests/initializers/PrintAst.expected +++ b/csharp/ql/test/library-tests/initializers/PrintAst.expected @@ -1,14 +1,14 @@ initializers.cs: # 3| [Class] S1 -# 5| 5: [Field] P1 +# 5| 6: [Field] P1 # 5| -1: [TypeMention] int -# 6| 6: [Property] P2 +# 6| 7: [Property] P2 # 6| -1: [TypeMention] int # 6| 3: [Getter] get_P2 # 6| 4: [Setter] set_P2 #-----| 2: (Parameters) # 6| 0: [Parameter] value -# 7| 7: [Property] P3 +# 7| 8: [Property] P3 # 7| -1: [TypeMention] int # 7| 3: [Setter] set_P3 #-----| 2: (Parameters) @@ -17,13 +17,13 @@ initializers.cs: # 10| [Class] S2 #-----| 3: (Base types) # 10| 1: [TypeMention] IEnumerable -# 12| 5: [Method] Add +# 12| 6: [Method] Add # 12| -1: [TypeMention] Void #-----| 2: (Parameters) # 12| 0: [Parameter] x # 12| -1: [TypeMention] int # 12| 4: [BlockStmt] {...} -# 13| 6: [Method] Add +# 13| 7: [Method] Add # 13| -1: [TypeMention] Void #-----| 2: (Parameters) # 13| 0: [Parameter] x @@ -31,13 +31,13 @@ initializers.cs: # 13| 1: [Parameter] y # 13| -1: [TypeMention] int # 13| 4: [BlockStmt] {...} -# 14| 7: [Method] GetEnumerator +# 14| 8: [Method] GetEnumerator # 14| -1: [TypeMention] IEnumerator # 14| 4: [BlockStmt] {...} # 14| 0: [ReturnStmt] return ...; # 14| 0: [NullLiteral] null # 17| [Class] Test -# 19| 5: [Method] Main +# 19| 6: [Method] Main # 19| -1: [TypeMention] Void #-----| 2: (Parameters) # 19| 0: [Parameter] args diff --git a/csharp/ql/test/library-tests/linq/PrintAst.expected b/csharp/ql/test/library-tests/linq/PrintAst.expected index fee8ab80ee2e..c16babcf2706 100644 --- a/csharp/ql/test/library-tests/linq/PrintAst.expected +++ b/csharp/ql/test/library-tests/linq/PrintAst.expected @@ -1,6 +1,6 @@ queries.cs: # 5| [Class] Queries -# 7| 5: [Method] Queries1 +# 7| 6: [Method] Queries1 # 7| -1: [TypeMention] Void # 8| 4: [BlockStmt] {...} # 9| 0: [LocalVariableDeclStmt] ... ...; @@ -204,19 +204,19 @@ queries.cs: # 56| 1: [TupleExpr] (..., ...) # 56| 0: [LocalVariableAccess] access to local variable a # 56| 1: [LocalVariableAccess] access to local variable d -# 59| 6: [Class] A +# 59| 7: [Class] A #-----| 3: (Base types) # 59| 1: [TypeMention] IEnumerable -# 61| 5: [Method] GetEnumerator +# 61| 6: [Method] GetEnumerator # 61| -1: [TypeMention] IEnumerator # 62| 4: [BlockStmt] {...} # 63| 0: [ThrowStmt] throw ...; # 63| 0: [ObjectCreation] object creation of type NotImplementedException # 63| 0: [TypeMention] NotImplementedException -# 67| 7: [Class] B +# 67| 8: [Class] B #-----| 3: (Base types) # 67| 0: [TypeMention] A -# 69| 8: [Class] C +# 69| 9: [Class] C #-----| 3: (Base types) # 69| 0: [TypeMention] List # 69| 1: [TypeMention] int diff --git a/csharp/ql/test/library-tests/members/PrintAst.expected b/csharp/ql/test/library-tests/members/PrintAst.expected index c8fe6fbf5d9b..3d1f4a344a43 100644 --- a/csharp/ql/test/library-tests/members/PrintAst.expected +++ b/csharp/ql/test/library-tests/members/PrintAst.expected @@ -7,8 +7,8 @@ Members.cs: # 3| 1: [Parameter] e # 3| -1: [TypeMention] object # 6| 2: [Class] Class -# 9| 5: [Class] NestedClass -# 12| 5: [Method] Method`1 +# 9| 6: [Class] NestedClass +# 12| 6: [Method] Method`1 # 12| -1: [TypeMention] string #-----| 1: (Type parameters) # 12| 0: [TypeParameter] T @@ -17,7 +17,7 @@ Members.cs: # 12| -1: [TypeMention] T # 12| 4: [MethodCall] call to method ToString # 12| -1: [ParameterAccess] access to parameter t -# 14| 6: [Indexer] Item +# 14| 7: [Indexer] Item # 14| -1: [TypeMention] string #-----| 1: (Parameters) # 14| 0: [Parameter] i @@ -32,15 +32,15 @@ Members.cs: # 14| 0: [Parameter] i # 14| 1: [Parameter] value # 14| 4: [BlockStmt] {...} -# 16| 7: [Field] Field +# 16| 8: [Field] Field # 16| -1: [TypeMention] string -# 18| 8: [Property] Prop +# 18| 9: [Property] Prop # 18| -1: [TypeMention] string # 18| 3: [Getter] get_Prop # 18| 4: [Setter] set_Prop #-----| 2: (Parameters) # 18| 0: [Parameter] value -# 20| 9: [Event] Event +# 20| 10: [Event] Event # 20| -1: [TypeMention] EventHandler # 20| 3: [AddEventAccessor] add_Event #-----| 2: (Parameters) @@ -48,10 +48,10 @@ Members.cs: # 20| 4: [RemoveEventAccessor] remove_Event #-----| 2: (Parameters) # 20| 0: [Parameter] value -# 24| 6: [Method] Method +# 24| 7: [Method] Method # 24| -1: [TypeMention] Void # 24| 4: [BlockStmt] {...} -# 26| 7: [Indexer] Item +# 26| 8: [Indexer] Item # 26| -1: [TypeMention] string #-----| 1: (Parameters) # 26| 0: [Parameter] i @@ -66,15 +66,15 @@ Members.cs: # 26| 0: [Parameter] i # 26| 1: [Parameter] value # 26| 4: [BlockStmt] {...} -# 28| 8: [Field] Field +# 28| 9: [Field] Field # 28| -1: [TypeMention] string -# 30| 9: [Property] Prop +# 30| 10: [Property] Prop # 30| -1: [TypeMention] string # 30| 3: [Getter] get_Prop # 30| 4: [Setter] set_Prop #-----| 2: (Parameters) # 30| 0: [Parameter] value -# 32| 10: [Event] Event +# 32| 11: [Event] Event # 32| -1: [TypeMention] EventHandler # 32| 3: [AddEventAccessor] add_Event #-----| 2: (Parameters) @@ -83,8 +83,8 @@ Members.cs: #-----| 2: (Parameters) # 32| 0: [Parameter] value # 35| 3: [Class] Class2 -# 37| 5: [Class] NestedClass2 -# 39| 5: [Method] Method`1 +# 37| 6: [Class] NestedClass2 +# 39| 6: [Method] Method`1 # 39| -1: [TypeMention] string #-----| 1: (Type parameters) # 39| 0: [TypeParameter] T @@ -93,7 +93,7 @@ Members.cs: # 39| -1: [TypeMention] T # 39| 4: [MethodCall] call to method ToString # 39| -1: [ParameterAccess] access to parameter t -# 40| 6: [Indexer] Item +# 40| 7: [Indexer] Item # 40| -1: [TypeMention] string #-----| 1: (Parameters) # 40| 0: [Parameter] i @@ -108,15 +108,15 @@ Members.cs: # 40| 0: [Parameter] i # 40| 1: [Parameter] value # 40| 4: [BlockStmt] {...} -# 41| 7: [Field] Field +# 41| 8: [Field] Field # 41| -1: [TypeMention] string -# 42| 8: [Property] Prop +# 42| 9: [Property] Prop # 42| -1: [TypeMention] string # 42| 3: [Getter] get_Prop # 42| 4: [Setter] set_Prop #-----| 2: (Parameters) # 42| 0: [Parameter] value -# 43| 9: [Event] Event +# 43| 10: [Event] Event # 43| -1: [TypeMention] EventHandler # 43| 3: [AddEventAccessor] add_Event #-----| 2: (Parameters) @@ -124,10 +124,10 @@ Members.cs: # 43| 4: [RemoveEventAccessor] remove_Event #-----| 2: (Parameters) # 43| 0: [Parameter] value -# 46| 6: [Method] Method +# 46| 7: [Method] Method # 46| -1: [TypeMention] Void # 46| 4: [BlockStmt] {...} -# 47| 7: [Indexer] Item +# 47| 8: [Indexer] Item # 47| -1: [TypeMention] string #-----| 1: (Parameters) # 47| 0: [Parameter] i @@ -142,15 +142,15 @@ Members.cs: # 47| 0: [Parameter] i # 47| 1: [Parameter] value # 47| 4: [BlockStmt] {...} -# 48| 8: [Field] Field +# 48| 9: [Field] Field # 48| -1: [TypeMention] string -# 49| 9: [Property] Prop +# 49| 10: [Property] Prop # 49| -1: [TypeMention] string # 49| 3: [Getter] get_Prop # 49| 4: [Setter] set_Prop #-----| 2: (Parameters) # 49| 0: [Parameter] value -# 50| 10: [Event] Event +# 50| 11: [Event] Event # 50| -1: [TypeMention] EventHandler # 50| 3: [AddEventAccessor] add_Event #-----| 2: (Parameters) diff --git a/csharp/ql/test/library-tests/methods/PrintAst.expected b/csharp/ql/test/library-tests/methods/PrintAst.expected index 42268fdc89d2..4810c6c0b5b7 100644 --- a/csharp/ql/test/library-tests/methods/PrintAst.expected +++ b/csharp/ql/test/library-tests/methods/PrintAst.expected @@ -1,7 +1,7 @@ methods.cs: # 4| [NamespaceDeclaration] namespace ... { ... } # 7| 1: [Class] TestRef -# 10| 5: [Method] Swap +# 10| 6: [Method] Swap # 10| -1: [TypeMention] Void #-----| 2: (Parameters) # 10| 0: [Parameter] x @@ -22,7 +22,7 @@ methods.cs: # 14| 0: [AssignExpr] ... = ... # 14| 0: [ParameterAccess] access to parameter y # 14| 1: [LocalVariableAccess] access to local variable temp -# 17| 6: [Method] Main +# 17| 7: [Method] Main # 17| -1: [TypeMention] Void # 18| 4: [BlockStmt] {...} # 19| 0: [LocalVariableDeclStmt] ... ...; @@ -57,7 +57,7 @@ methods.cs: # 22| 2: [CastExpr] (...) ... # 22| 1: [LocalVariableAccess] access to local variable j # 26| 2: [Class] TestOut -# 29| 5: [Method] Divide +# 29| 6: [Method] Divide # 29| -1: [TypeMention] Void #-----| 2: (Parameters) # 29| 0: [Parameter] x @@ -81,7 +81,7 @@ methods.cs: # 32| 1: [RemExpr] ... % ... # 32| 0: [ParameterAccess] access to parameter x # 32| 1: [ParameterAccess] access to parameter y -# 35| 6: [Method] Main +# 35| 7: [Method] Main # 35| -1: [TypeMention] Void # 36| 4: [BlockStmt] {...} # 37| 0: [LocalVariableDeclStmt] ... ...; @@ -105,7 +105,7 @@ methods.cs: # 39| 2: [CastExpr] (...) ... # 39| 1: [LocalVariableAccess] access to local variable rem # 43| 3: [Class] Console -# 46| 5: [Method] Write +# 46| 6: [Method] Write # 46| -1: [TypeMention] Void #-----| 2: (Parameters) # 46| 0: [Parameter] fmt @@ -114,7 +114,7 @@ methods.cs: # 46| -1: [TypeMention] Object[] # 46| 1: [TypeMention] object # 46| 4: [BlockStmt] {...} -# 47| 6: [Method] WriteLine +# 47| 7: [Method] WriteLine # 47| -1: [TypeMention] Void #-----| 2: (Parameters) # 47| 0: [Parameter] fmt @@ -124,7 +124,7 @@ methods.cs: # 47| 1: [TypeMention] object # 47| 4: [BlockStmt] {...} # 50| 4: [Class] TestOverloading -# 53| 5: [Method] F +# 53| 6: [Method] F # 53| -1: [TypeMention] Void # 54| 4: [BlockStmt] {...} # 55| 0: [ExprStmt] ...; @@ -132,7 +132,7 @@ methods.cs: # 55| -1: [TypeAccess] access to type Console # 55| 0: [TypeMention] Console # 55| 0: [StringLiteralUtf16] "F()" -# 58| 6: [Method] F +# 58| 7: [Method] F # 58| -1: [TypeMention] Void #-----| 2: (Parameters) # 58| 0: [Parameter] x @@ -143,7 +143,7 @@ methods.cs: # 60| -1: [TypeAccess] access to type Console # 60| 0: [TypeMention] Console # 60| 0: [StringLiteralUtf16] "F(object)" -# 63| 7: [Method] F +# 63| 8: [Method] F # 63| -1: [TypeMention] Void #-----| 2: (Parameters) # 63| 0: [Parameter] x @@ -154,7 +154,7 @@ methods.cs: # 65| -1: [TypeAccess] access to type Console # 65| 0: [TypeMention] Console # 65| 0: [StringLiteralUtf16] "F(int)" -# 68| 8: [Method] F +# 68| 9: [Method] F # 68| -1: [TypeMention] Void #-----| 2: (Parameters) # 68| 0: [Parameter] x @@ -165,7 +165,7 @@ methods.cs: # 70| -1: [TypeAccess] access to type Console # 70| 0: [TypeMention] Console # 70| 0: [StringLiteralUtf16] "F(double)" -# 73| 11: [Method] F`1 +# 73| 12: [Method] F`1 # 73| -1: [TypeMention] Void #-----| 1: (Type parameters) # 73| 0: [TypeParameter] T @@ -178,7 +178,7 @@ methods.cs: # 75| -1: [TypeAccess] access to type Console # 75| 0: [TypeMention] Console # 75| 0: [StringLiteralUtf16] "F(T)" -# 78| 12: [Method] F +# 78| 13: [Method] F # 78| -1: [TypeMention] Void #-----| 2: (Parameters) # 78| 0: [Parameter] x @@ -191,7 +191,7 @@ methods.cs: # 80| -1: [TypeAccess] access to type Console # 80| 0: [TypeMention] Console # 80| 0: [StringLiteralUtf16] "F(double, double)" -# 83| 13: [Method] Main +# 83| 14: [Method] Main # 83| -1: [TypeMention] Void # 84| 4: [BlockStmt] {...} # 85| 0: [ExprStmt] ...; @@ -352,7 +352,7 @@ methods.cs: # 135| -1: [TypeAccess] access to type Boolean # 135| 0: [TypeMention] bool # 140| 7: [Class] TestDefaultParameters -# 142| 4: [Method] Method1 +# 142| 5: [Method] Method1 # 142| -1: [TypeMention] Void #-----| 2: (Parameters) # 142| 0: [Parameter] x @@ -360,7 +360,7 @@ methods.cs: # 142| 1: [Parameter] y # 142| -1: [TypeMention] int # 143| 4: [BlockStmt] {...} -# 146| 5: [Method] Method2 +# 146| 6: [Method] Method2 # 146| -1: [TypeMention] Void #-----| 2: (Parameters) # 146| 0: [Parameter] a @@ -379,12 +379,12 @@ methods.cs: # 146| 0: [StringLiteralUtf16] "a" # 146| 1: [StringLiteralUtf16] "b" # 147| 4: [BlockStmt] {...} -# 150| 6: [InstanceConstructor] TestDefaultParameters +# 150| 7: [InstanceConstructor] TestDefaultParameters #-----| 2: (Parameters) # 150| 0: [Parameter] x # 150| -1: [TypeMention] int # 151| 4: [BlockStmt] {...} -# 154| 7: [InstanceConstructor] TestDefaultParameters +# 154| 8: [InstanceConstructor] TestDefaultParameters #-----| 2: (Parameters) # 154| 0: [Parameter] x # 154| -1: [TypeMention] string @@ -394,7 +394,7 @@ methods.cs: # 154| 1: [ObjectCreation] object creation of type Double # 154| 0: [TypeMention] double # 155| 4: [BlockStmt] {...} -# 158| 8: [DelegateType] Del +# 158| 9: [DelegateType] Del #-----| 2: (Parameters) # 158| 0: [Parameter] a # 158| -1: [TypeMention] string @@ -405,7 +405,7 @@ methods.cs: # 158| -1: [TypeMention] double # 158| 1: [ObjectCreation] object creation of type Double # 158| 0: [TypeMention] double -# 160| 9: [Indexer] Item +# 160| 10: [Indexer] Item # 160| -1: [TypeMention] int #-----| 1: (Parameters) # 160| 0: [Parameter] x @@ -477,7 +477,7 @@ methods.cs: # 185| 9: [Class] TestCollidingMethods`1 #-----| 1: (Type parameters) # 185| 0: [TypeParameter] T -# 187| 5: [Method] M +# 187| 6: [Method] M # 187| -1: [TypeMention] Void #-----| 2: (Parameters) # 187| 0: [Parameter] p1 @@ -485,7 +485,7 @@ methods.cs: # 187| 1: [Parameter] p2 # 187| -1: [TypeMention] int # 187| 4: [BlockStmt] {...} -# 188| 6: [Method] M +# 188| 7: [Method] M # 188| -1: [TypeMention] Void #-----| 2: (Parameters) # 188| 0: [Parameter] p1 @@ -493,7 +493,7 @@ methods.cs: # 188| 1: [Parameter] p2 # 188| -1: [TypeMention] int # 188| 4: [BlockStmt] {...} -# 190| 7: [Method] Calls +# 190| 8: [Method] Calls # 190| -1: [TypeMention] Void # 191| 4: [BlockStmt] {...} # 192| 0: [LocalVariableDeclStmt] ... ...; @@ -525,13 +525,13 @@ methods.cs: # 197| -1: [LocalVariableAccess] access to local variable y # 197| 0: [IntLiteral] 1 # 197| 1: [IntLiteral] 1 -# 200| 8: [Class] Nested -# 202| 4: [InstanceConstructor] Nested +# 200| 9: [Class] Nested +# 202| 5: [InstanceConstructor] Nested #-----| 2: (Parameters) # 202| 0: [Parameter] p1 # 202| -1: [TypeMention] int # 202| 4: [BlockStmt] {...} -# 203| 5: [InstanceConstructor] Nested +# 203| 6: [InstanceConstructor] Nested #-----| 2: (Parameters) # 203| 0: [Parameter] p1 # 203| -1: [TypeMention] T diff --git a/csharp/ql/test/library-tests/namespaces/PrintAst.expected b/csharp/ql/test/library-tests/namespaces/PrintAst.expected index 2b0e505ec270..88d8dbe02a7e 100644 --- a/csharp/ql/test/library-tests/namespaces/PrintAst.expected +++ b/csharp/ql/test/library-tests/namespaces/PrintAst.expected @@ -26,7 +26,7 @@ namespaces.cs: # 72| 1: [Class] A`1 #-----| 1: (Type parameters) # 72| 0: [TypeParameter] T -# 75| 5: [Class] B +# 75| 6: [Class] B # 79| 2: [Class] A # 83| [NamespaceDeclaration] namespace ... { ... } # 90| [NamespaceDeclaration] namespace ... { ... } diff --git a/csharp/ql/test/library-tests/nestedtypes/PrintAst.expected b/csharp/ql/test/library-tests/nestedtypes/PrintAst.expected index 8a2f4343556a..9a0c4a7f029e 100644 --- a/csharp/ql/test/library-tests/nestedtypes/PrintAst.expected +++ b/csharp/ql/test/library-tests/nestedtypes/PrintAst.expected @@ -1,13 +1,13 @@ nestedtypes.cs: # 5| [NamespaceDeclaration] namespace ... { ... } # 8| 1: [Class] Base -# 11| 5: [Struct] S -# 13| 6: [Interface] I -# 15| 7: [DelegateType] MyDelegate +# 11| 6: [Struct] S +# 13| 7: [Interface] I +# 15| 8: [DelegateType] MyDelegate #-----| 2: (Parameters) # 15| 0: [Parameter] s # 15| -1: [TypeMention] S -# 17| 8: [Method] F +# 17| 9: [Method] F # 17| -1: [TypeMention] Void # 18| 4: [BlockStmt] {...} # 19| 0: [ExprStmt] ...; @@ -15,12 +15,12 @@ nestedtypes.cs: # 19| -1: [TypeAccess] access to type Console # 19| 0: [TypeMention] Console # 19| 0: [StringLiteralUtf16] "Base.F" -# 22| 9: [Class] C +# 22| 10: [Class] C # 26| 2: [Class] Derived #-----| 3: (Base types) # 26| 0: [TypeMention] Base -# 29| 5: [Class] Nested -# 32| 5: [Method] G +# 29| 6: [Class] Nested +# 32| 6: [Method] G # 32| -1: [TypeMention] Void # 33| 4: [BlockStmt] {...} # 34| 0: [LocalVariableDeclStmt] ... ...; @@ -33,7 +33,7 @@ nestedtypes.cs: # 35| 0: [MethodCall] call to method F # 35| -1: [LocalVariableAccess] access to local variable d # 42| 3: [Class] Test -# 45| 5: [Method] Main +# 45| 6: [Method] Main # 45| -1: [TypeMention] Void # 46| 4: [BlockStmt] {...} # 47| 0: [LocalVariableDeclStmt] ... ...; @@ -50,10 +50,10 @@ nestedtypes.cs: # 53| 4: [Class] Outer`1 #-----| 1: (Type parameters) # 53| 0: [TypeParameter] T -# 56| 6: [Class] Inner`1 +# 56| 7: [Class] Inner`1 #-----| 1: (Type parameters) # 56| 0: [TypeParameter] U -# 59| 5: [Method] F +# 59| 6: [Method] F # 59| -1: [TypeMention] Void #-----| 2: (Parameters) # 59| 0: [Parameter] t @@ -61,7 +61,7 @@ nestedtypes.cs: # 59| 1: [Parameter] u # 59| -1: [TypeMention] U # 59| 4: [BlockStmt] {...} -# 63| 7: [Method] F +# 63| 8: [Method] F # 63| -1: [TypeMention] Void #-----| 2: (Parameters) # 63| 0: [Parameter] t @@ -100,8 +100,8 @@ nestedtypes.cs: # 74| 5: [Class] Outer2`1 #-----| 1: (Type parameters) # 74| 0: [TypeParameter] T -# 77| 5: [Class] Inner2`1 +# 77| 6: [Class] Inner2`1 #-----| 1: (Type parameters) # 77| 0: [TypeParameter] T -# 80| 5: [Field] t +# 80| 6: [Field] t # 80| -1: [TypeMention] T diff --git a/csharp/ql/test/library-tests/nullable/NullableExpressions.expected b/csharp/ql/test/library-tests/nullable/NullableExpressions.expected index 675450ab2eeb..7d66522f0b95 100644 --- a/csharp/ql/test/library-tests/nullable/NullableExpressions.expected +++ b/csharp/ql/test/library-tests/nullable/NullableExpressions.expected @@ -1,4 +1,6 @@ | 1 | 14 | nullable.cs:1:14:1:21 | Nullable | nullable.cs:1:14:1:21 | call to constructor Object | Object | +| 1 | 14 | nullable.cs:1:14:1:21 | Nullable | nullable.cs:1:14:1:21 | call to method | Void | +| 1 | 14 | nullable.cs:1:14:1:21 | call to method | nullable.cs:1:14:1:21 | this access | Nullable | | 5 | 13 | nullable.cs:5:9:6:24 | if (...) ... | nullable.cs:5:13:5:21 | ... == ... | Boolean | | 5 | 13 | nullable.cs:5:13:5:21 | ... == ... | nullable.cs:5:13:5:13 | access to parameter x | Nullable | | 5 | 18 | nullable.cs:5:13:5:21 | ... == ... | nullable.cs:5:18:5:21 | null | null | diff --git a/csharp/ql/test/library-tests/obinit/Flow.expected b/csharp/ql/test/library-tests/obinit/Flow.expected new file mode 100644 index 000000000000..619154a60d2c --- /dev/null +++ b/csharp/ql/test/library-tests/obinit/Flow.expected @@ -0,0 +1,20 @@ +edges +| obinit.cs:5:23:5:23 | [post] this access : A [field s] : String | obinit.cs:7:16:7:16 | [post] this access : A [field s] : String | provenance | | +| obinit.cs:5:27:5:34 | "source" : String | obinit.cs:5:23:5:23 | [post] this access : A [field s] : String | provenance | | +| obinit.cs:7:16:7:16 | [post] this access : A [field s] : String | obinit.cs:7:16:7:16 | this [Return] : A [field s] : String | provenance | | +| obinit.cs:7:16:7:16 | this [Return] : A [field s] : String | obinit.cs:20:19:20:25 | object creation of type A : A [field s] : String | provenance | | +| obinit.cs:20:15:20:15 | access to local variable a : A [field s] : String | obinit.cs:21:18:21:18 | access to local variable a : A [field s] : String | provenance | | +| obinit.cs:20:19:20:25 | object creation of type A : A [field s] : String | obinit.cs:20:15:20:15 | access to local variable a : A [field s] : String | provenance | | +| obinit.cs:21:18:21:18 | access to local variable a : A [field s] : String | obinit.cs:21:18:21:20 | access to field s | provenance | | +nodes +| obinit.cs:5:23:5:23 | [post] this access : A [field s] : String | semmle.label | [post] this access : A [field s] : String | +| obinit.cs:5:27:5:34 | "source" : String | semmle.label | "source" : String | +| obinit.cs:7:16:7:16 | [post] this access : A [field s] : String | semmle.label | [post] this access : A [field s] : String | +| obinit.cs:7:16:7:16 | this [Return] : A [field s] : String | semmle.label | this [Return] : A [field s] : String | +| obinit.cs:20:15:20:15 | access to local variable a : A [field s] : String | semmle.label | access to local variable a : A [field s] : String | +| obinit.cs:20:19:20:25 | object creation of type A : A [field s] : String | semmle.label | object creation of type A : A [field s] : String | +| obinit.cs:21:18:21:18 | access to local variable a : A [field s] : String | semmle.label | access to local variable a : A [field s] : String | +| obinit.cs:21:18:21:20 | access to field s | semmle.label | access to field s | +subpaths +#select +| obinit.cs:21:18:21:20 | access to field s | diff --git a/csharp/ql/test/library-tests/obinit/Flow.ql b/csharp/ql/test/library-tests/obinit/Flow.ql new file mode 100644 index 000000000000..93c4bd24e5aa --- /dev/null +++ b/csharp/ql/test/library-tests/obinit/Flow.ql @@ -0,0 +1,22 @@ +import csharp + +module FlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.asExpr().(StringLiteral).getValue() = "source" + } + + predicate isSink(DataFlow::Node sink) { + exists(MethodCall mc | + mc.getTarget().getUndecoratedName() = "Sink" and + mc.getAnArgument() = sink.asExpr() + ) + } +} + +module Flow = DataFlow::Global; + +import Flow::PathGraph + +from DataFlow::Node source, DataFlow::Node sink +where Flow::flow(source, sink) +select sink diff --git a/csharp/ql/test/library-tests/obinit/ObInit.expected b/csharp/ql/test/library-tests/obinit/ObInit.expected new file mode 100644 index 000000000000..38dd82686801 --- /dev/null +++ b/csharp/ql/test/library-tests/obinit/ObInit.expected @@ -0,0 +1,25 @@ +method +| obinit.cs:2:18:2:18 | | obinit.cs:2:18:2:18 | A | +| obinit.cs:14:18:14:18 | | obinit.cs:14:18:14:18 | B | +call +| obinit.cs:7:16:7:16 | call to method | obinit.cs:2:18:2:18 | | obinit.cs:7:16:7:16 | A | +| obinit.cs:9:16:9:16 | call to method | obinit.cs:2:18:2:18 | | obinit.cs:9:16:9:16 | A | +| obinit.cs:15:16:15:16 | call to method | obinit.cs:14:18:14:18 | | obinit.cs:15:16:15:16 | B | +cfg +| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:13 | this access | obinit.cs:3:17:3:17 | 1 | normal | 0 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:17 | ... = ... | obinit.cs:5:23:5:23 | this access | normal | 2 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:17:3:17 | 1 | obinit.cs:3:13:3:17 | ... = ... | normal | 1 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:23 | this access | obinit.cs:5:27:5:34 | "source" | normal | 3 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:27:5:34 | "source" | obinit.cs:5:23:5:34 | ... = ... | normal | 4 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | call to constructor Object | obinit.cs:7:20:7:22 | {...} | normal | 2 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | call to method | obinit.cs:7:16:7:16 | call to constructor Object | normal | 1 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | this access | obinit.cs:7:16:7:16 | call to method | normal | 0 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to constructor Object | obinit.cs:9:25:9:27 | {...} | normal | 2 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to method | obinit.cs:9:16:9:16 | call to constructor Object | normal | 1 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | this access | obinit.cs:9:16:9:16 | call to method | normal | 0 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | call to constructor A | obinit.cs:11:42:11:44 | {...} | normal | 1 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:39:11:39 | access to parameter y | obinit.cs:11:34:11:37 | call to constructor A | normal | 0 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | call to method | obinit.cs:15:27:15:28 | 10 | normal | 1 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | this access | obinit.cs:15:16:15:16 | call to method | normal | 0 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:22:15:25 | call to constructor A | obinit.cs:15:31:15:33 | {...} | normal | 3 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:27:15:28 | 10 | obinit.cs:15:22:15:25 | call to constructor A | normal | 2 | diff --git a/csharp/ql/test/library-tests/obinit/ObInit.ql b/csharp/ql/test/library-tests/obinit/ObInit.ql new file mode 100644 index 000000000000..cfd21d14b5e0 --- /dev/null +++ b/csharp/ql/test/library-tests/obinit/ObInit.ql @@ -0,0 +1,28 @@ +import csharp +import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl +import semmle.code.csharp.controlflow.internal.Completion +import semmle.code.csharp.dataflow.internal.DataFlowPrivate +import semmle.code.csharp.dataflow.internal.DataFlowDispatch + +query predicate method(ObjectInitMethod m, RefType t) { m.getDeclaringType() = t } + +query predicate call(Call c, ObjectInitMethod m, Callable src) { + c.getTarget() = m and c.getEnclosingCallable() = src +} + +predicate scope(Callable callable, AstNode n, int i) { + (callable instanceof ObjectInitMethod or callable instanceof Constructor) and + scopeFirst(callable, n) and + i = 0 + or + exists(AstNode prev | + scope(callable, prev, i - 1) and + succ(prev, n, _) and + i < 30 + ) +} + +query predicate cfg(Callable callable, AstNode pred, AstNode succ, Completion c, int i) { + scope(callable, pred, i) and + succ(pred, succ, c) +} diff --git a/csharp/ql/test/library-tests/obinit/obinit.cs b/csharp/ql/test/library-tests/obinit/obinit.cs new file mode 100644 index 000000000000..e4e851ed1d83 --- /dev/null +++ b/csharp/ql/test/library-tests/obinit/obinit.cs @@ -0,0 +1,30 @@ +namespace ObInit { + public class A { + int x = 1; + + public string s = "source"; + + public A() { } + + public A(int y) { } + + public A(int y, int z) : this(y) { } + } + + public class B : A { + public B() : base(10) { } + + static void Sink(string s) { } + + static void Foo() { + A a = new A(); + Sink(a.s); + + A a2 = new A(0, 0); + Sink(a2.s); + + B b = new B(); + Sink(b.s); + } + } +} diff --git a/csharp/ql/test/library-tests/operators/PrintAst.expected b/csharp/ql/test/library-tests/operators/PrintAst.expected index 0b490c13d2c0..d3b41fe05fb7 100644 --- a/csharp/ql/test/library-tests/operators/PrintAst.expected +++ b/csharp/ql/test/library-tests/operators/PrintAst.expected @@ -1,18 +1,18 @@ operators.cs: # 5| [NamespaceDeclaration] namespace ... { ... } # 7| 1: [Class] IntVector -# 10| 4: [InstanceConstructor] IntVector +# 10| 5: [InstanceConstructor] IntVector #-----| 2: (Parameters) # 10| 0: [Parameter] length # 10| -1: [TypeMention] int # 10| 4: [BlockStmt] {...} -# 12| 5: [Property] Length +# 12| 6: [Property] Length # 12| -1: [TypeMention] int # 12| 3: [Getter] get_Length # 12| 4: [BlockStmt] {...} # 12| 0: [ReturnStmt] return ...; # 12| 0: [IntLiteral] 4 -# 14| 6: [Indexer] Item +# 14| 7: [Indexer] Item # 14| -1: [TypeMention] int #-----| 1: (Parameters) # 14| 0: [Parameter] index @@ -28,7 +28,7 @@ operators.cs: # 14| 0: [Parameter] index # 14| 1: [Parameter] value # 14| 4: [BlockStmt] {...} -# 16| 7: [IncrementOperator] ++ +# 16| 8: [IncrementOperator] ++ # 16| -1: [TypeMention] IntVector #-----| 2: (Parameters) # 16| 0: [Parameter] iv @@ -66,7 +66,7 @@ operators.cs: # 21| 2: [ReturnStmt] return ...; # 21| 0: [LocalVariableAccess] access to local variable temp # 26| 2: [Class] TestUnaryOperator -# 29| 5: [Method] Main +# 29| 6: [Method] Main # 29| -1: [TypeMention] Void # 30| 4: [BlockStmt] {...} # 31| 0: [LocalVariableDeclStmt] ... ...; @@ -90,9 +90,9 @@ operators.cs: # 34| 1: [OperatorCall] call to operator ++ # 34| 0: [LocalVariableAccess] access to local variable iv1 # 39| 3: [Struct] Digit -# 42| 5: [Field] value +# 42| 6: [Field] value # 42| -1: [TypeMention] byte -# 44| 6: [InstanceConstructor] Digit +# 44| 7: [InstanceConstructor] Digit #-----| 2: (Parameters) # 44| 0: [Parameter] value # 44| -1: [TypeMention] byte @@ -115,7 +115,7 @@ operators.cs: # 48| 0: [FieldAccess] access to field value # 48| -1: [ThisAccess] this access # 48| 1: [ParameterAccess] access to parameter value -# 51| 7: [ImplicitConversionOperator] implicit conversion +# 51| 8: [ImplicitConversionOperator] implicit conversion # 51| -1: [TypeMention] byte #-----| 2: (Parameters) # 51| 0: [Parameter] d @@ -124,7 +124,7 @@ operators.cs: # 53| 0: [ReturnStmt] return ...; # 53| 0: [FieldAccess] access to field value # 53| -1: [ParameterAccess] access to parameter d -# 56| 8: [ExplicitConversionOperator] explicit conversion +# 56| 9: [ExplicitConversionOperator] explicit conversion # 56| -1: [TypeMention] Digit #-----| 2: (Parameters) # 56| 0: [Parameter] b @@ -135,7 +135,7 @@ operators.cs: # 58| -1: [TypeMention] Digit # 58| 0: [ParameterAccess] access to parameter b # 63| 4: [Class] TestConversionOperator -# 66| 5: [Method] Main +# 66| 6: [Method] Main # 66| -1: [TypeMention] Void # 67| 4: [BlockStmt] {...} # 68| 0: [LocalVariableDeclStmt] ... ...; diff --git a/csharp/ql/test/library-tests/overlay/base/test.expected b/csharp/ql/test/library-tests/overlay/base/test.expected index 0c2b5750f2cb..67a440b87db7 100644 --- a/csharp/ql/test/library-tests/overlay/base/test.expected +++ b/csharp/ql/test/library-tests/overlay/base/test.expected @@ -1,5 +1,7 @@ expressions | A.cs:8:16:8:16 | call to constructor Object | +| A.cs:8:16:8:16 | call to method | +| A.cs:8:16:8:16 | this access | | A.cs:10:13:10:16 | access to field name | | A.cs:10:13:10:16 | this access | | A.cs:10:13:10:20 | ... = ... | @@ -34,7 +36,11 @@ expressions | A.cs:58:27:58:30 | this access | | A.cs:59:20:59:20 | access to local variable x | | A.cs:63:18:63:36 | call to constructor Attribute | +| A.cs:63:18:63:36 | call to method | +| A.cs:63:18:63:36 | this access | | A.cs:65:18:65:18 | call to constructor Object | +| A.cs:65:18:65:18 | call to method | +| A.cs:65:18:65:18 | this access | | Program.cs:9:17:9:20 | access to parameter args | | Program.cs:9:17:9:27 | access to property Length | | Program.cs:9:17:9:32 | ... == ... | @@ -56,6 +62,8 @@ expressions | Program.cs:16:31:16:31 | access to local variable a | | Program.cs:16:31:16:42 | call to method ToString | | Program.cs:21:16:21:22 | call to constructor Object | +| Program.cs:21:16:21:22 | call to method | +| Program.cs:21:16:21:22 | this access | | Program.cs:23:13:23:23 | access to field programName | | Program.cs:23:13:23:23 | this access | | Program.cs:23:13:23:27 | ... = ... | @@ -77,6 +85,8 @@ expressions | Program.cs:51:35:51:59 | "Program handler removed" | | Program.cs:57:20:57:20 | access to parameter b | | Program.cs:64:18:64:33 | call to constructor Attribute | +| Program.cs:64:18:64:33 | call to method | +| Program.cs:64:18:64:33 | this access | statements | A.cs:9:9:11:9 | {...} | | A.cs:10:13:10:21 | ...; | diff --git a/csharp/ql/test/library-tests/overlay/overlay/test.expected b/csharp/ql/test/library-tests/overlay/overlay/test.expected index d9d4d0ec6fe0..bb9a82b3a238 100644 --- a/csharp/ql/test/library-tests/overlay/overlay/test.expected +++ b/csharp/ql/test/library-tests/overlay/overlay/test.expected @@ -1,6 +1,10 @@ expressions | A.cs:5:18:5:18 | call to constructor Object | +| A.cs:5:18:5:18 | call to method | +| A.cs:5:18:5:18 | this access | | A.cs:10:16:10:16 | call to constructor Object | +| A.cs:10:16:10:16 | call to method | +| A.cs:10:16:10:16 | this access | | A.cs:12:13:12:16 | access to field name | | A.cs:12:13:12:16 | this access | | A.cs:12:13:12:20 | ... = ... | @@ -40,6 +44,8 @@ expressions | A.cs:64:24:64:27 | this access | | A.cs:64:24:64:37 | call to method ToUpper | | A.cs:69:18:69:36 | call to constructor Attribute | +| A.cs:69:18:69:36 | call to method | +| A.cs:69:18:69:36 | this access | | Program.cs:9:17:9:20 | access to parameter args | | Program.cs:9:17:9:27 | access to property Length | | Program.cs:9:17:9:32 | ... == ... | @@ -61,6 +67,8 @@ expressions | Program.cs:16:31:16:31 | access to local variable a | | Program.cs:16:31:16:42 | call to method ToString | | Program.cs:21:16:21:22 | call to constructor Object | +| Program.cs:21:16:21:22 | call to method | +| Program.cs:21:16:21:22 | this access | | Program.cs:23:13:23:23 | access to field programName | | Program.cs:23:13:23:23 | this access | | Program.cs:23:13:23:27 | ... = ... | @@ -82,6 +90,8 @@ expressions | Program.cs:51:35:51:59 | "Program handler removed" | | Program.cs:57:20:57:20 | access to parameter b | | Program.cs:64:18:64:33 | call to constructor Attribute | +| Program.cs:64:18:64:33 | call to method | +| Program.cs:64:18:64:33 | this access | statements | A.cs:5:18:5:18 | {...} | | A.cs:11:9:13:9 | {...} | diff --git a/csharp/ql/test/library-tests/partial/Partial2.expected b/csharp/ql/test/library-tests/partial/Partial2.expected index 9dc3a24a4ce8..87194dd3f9eb 100644 --- a/csharp/ql/test/library-tests/partial/Partial2.expected +++ b/csharp/ql/test/library-tests/partial/Partial2.expected @@ -1,10 +1,15 @@ +| Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:1:15:1:26 | | | Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:4:18:4:42 | PartialMethodWithoutBody1 | | Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:5:17:5:23 | Method2 | | Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:14:18:14:39 | PartialMethodWithBody1 | | Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:15:17:15:23 | Method3 | +| Partial.cs:12:15:12:26 | TwoPartClass | Partial.cs:1:15:1:26 | | | Partial.cs:12:15:12:26 | TwoPartClass | Partial.cs:4:18:4:42 | PartialMethodWithoutBody1 | | Partial.cs:12:15:12:26 | TwoPartClass | Partial.cs:5:17:5:23 | Method2 | | Partial.cs:12:15:12:26 | TwoPartClass | Partial.cs:14:18:14:39 | PartialMethodWithBody1 | | Partial.cs:12:15:12:26 | TwoPartClass | Partial.cs:15:17:15:23 | Method3 | +| Partial.cs:32:15:32:33 | OnePartPartialClass | Partial.cs:32:15:32:33 | | | Partial.cs:32:15:32:33 | OnePartPartialClass | Partial.cs:34:18:34:42 | PartialMethodWithoutBody2 | | Partial.cs:32:15:32:33 | OnePartPartialClass | Partial.cs:35:17:35:23 | Method4 | +| PartialMultipleFiles1.cs:1:22:1:41 | PartialMultipleFiles | PartialMultipleFiles1.cs:1:22:1:41 | | +| PartialMultipleFiles2.cs:1:22:1:41 | PartialMultipleFiles | PartialMultipleFiles1.cs:1:22:1:41 | | diff --git a/csharp/ql/test/library-tests/partial/PrintAst.expected b/csharp/ql/test/library-tests/partial/PrintAst.expected index d97f6fc01f04..0729946b18be 100644 --- a/csharp/ql/test/library-tests/partial/PrintAst.expected +++ b/csharp/ql/test/library-tests/partial/PrintAst.expected @@ -1,19 +1,19 @@ Partial.cs: # 1| [Class] TwoPartClass -# 4| 5: [Method] PartialMethodWithoutBody1 +# 4| 6: [Method] PartialMethodWithoutBody1 # 4| -1: [TypeMention] Void -# 5| 6: [Method] Method2 +# 5| 7: [Method] Method2 # 5| -1: [TypeMention] Void # 5| 4: [BlockStmt] {...} -# 14| 7: [Method] PartialMethodWithBody1 +# 14| 8: [Method] PartialMethodWithBody1 # 3| -1: [TypeMention] Void # 14| 4: [BlockStmt] {...} -# 15| 8: [Method] Method3 +# 15| 9: [Method] Method3 # 15| -1: [TypeMention] Void # 15| 4: [BlockStmt] {...} -# 16| 9: [Field] _backingField +# 16| 10: [Field] _backingField # 16| -1: [TypeMention] object -# 18| 10: [Property] PartialProperty1 +# 18| 11: [Property] PartialProperty1 # 7| -1: [TypeMention] object # 18| -1: [TypeMention] object # 20| 3: [Getter] get_PartialProperty1 @@ -28,10 +28,10 @@ Partial.cs: # 21| 0: [AssignExpr] ... = ... # 21| 0: [FieldAccess] access to field _backingField # 21| 1: [ParameterAccess] access to parameter value -# 23| 11: [Field] _backingArray +# 23| 12: [Field] _backingArray # 23| -1: [TypeMention] Object[] # 23| 1: [TypeMention] object -# 25| 12: [Indexer] Item +# 25| 13: [Indexer] Item # 9| -1: [TypeMention] object # 25| -1: [TypeMention] object #-----| 1: (Parameters) @@ -58,22 +58,22 @@ Partial.cs: # 28| 0: [ParameterAccess] access to parameter index # 28| 1: [ParameterAccess] access to parameter value # 32| [Class] OnePartPartialClass -# 34| 5: [Method] PartialMethodWithoutBody2 +# 34| 6: [Method] PartialMethodWithoutBody2 # 34| -1: [TypeMention] Void -# 35| 6: [Method] Method4 +# 35| 7: [Method] Method4 # 35| -1: [TypeMention] Void # 35| 4: [BlockStmt] {...} # 38| [Class] NonPartialClass -# 40| 5: [Method] Method5 +# 40| 6: [Method] Method5 # 40| -1: [TypeMention] Void # 40| 4: [BlockStmt] {...} -# 41| 6: [Property] Property +# 41| 7: [Property] Property # 41| -1: [TypeMention] object # 41| 3: [Getter] get_Property # 41| 4: [Setter] set_Property #-----| 2: (Parameters) # 41| 0: [Parameter] value -# 42| 7: [Indexer] Item +# 42| 8: [Indexer] Item # 42| -1: [TypeMention] object #-----| 1: (Parameters) # 42| 0: [Parameter] index diff --git a/csharp/ql/test/library-tests/properties/PrintAst.expected b/csharp/ql/test/library-tests/properties/PrintAst.expected index 370d180a08e8..2df3ee3f5e85 100644 --- a/csharp/ql/test/library-tests/properties/PrintAst.expected +++ b/csharp/ql/test/library-tests/properties/PrintAst.expected @@ -1,9 +1,9 @@ properties.cs: # 5| [NamespaceDeclaration] namespace ... { ... } # 7| 1: [Class] Button -# 10| 5: [Field] caption +# 10| 6: [Field] caption # 10| -1: [TypeMention] string -# 12| 6: [Property] Caption +# 12| 7: [Property] Caption # 12| -1: [TypeMention] string # 15| 3: [Getter] get_Caption # 15| 4: [BlockStmt] {...} @@ -22,7 +22,7 @@ properties.cs: # 21| 0: [AssignExpr] ... = ... # 21| 0: [FieldAccess] access to field caption # 21| 1: [ParameterAccess] access to parameter value -# 26| 7: [Method] Paint +# 26| 8: [Method] Paint # 26| -1: [TypeMention] Void # 27| 4: [BlockStmt] {...} # 28| 0: [LocalVariableDeclStmt] ... ...; @@ -43,9 +43,9 @@ properties.cs: # 30| 1: [PropertyCall] access to property Caption # 30| -1: [LocalVariableAccess] access to local variable okButton # 34| 2: [Class] Counter -# 37| 5: [Field] next +# 37| 6: [Field] next # 37| -1: [TypeMention] int -# 39| 6: [Property] Next +# 39| 7: [Property] Next # 39| -1: [TypeMention] int # 41| 3: [Getter] get_Next # 41| 4: [BlockStmt] {...} @@ -53,32 +53,32 @@ properties.cs: # 41| 0: [PostIncrExpr] ...++ # 41| 0: [FieldAccess] access to field next # 46| 3: [Class] Point -# 49| 5: [Property] X +# 49| 6: [Property] X # 49| -1: [TypeMention] int # 49| 3: [Getter] get_X # 49| 4: [Setter] set_X #-----| 2: (Parameters) # 49| 0: [Parameter] value -# 50| 6: [Property] Y +# 50| 7: [Property] Y # 50| -1: [TypeMention] int # 50| 3: [Getter] get_Y # 50| 4: [Setter] set_Y #-----| 2: (Parameters) # 50| 0: [Parameter] value # 54| 4: [Class] ReadOnlyPoint -# 57| 4: [Property] X +# 57| 5: [Property] X # 57| -1: [TypeMention] int # 57| 3: [Getter] get_X # 57| 4: [Setter] set_X #-----| 2: (Parameters) # 57| 0: [Parameter] value -# 58| 5: [Property] Y +# 58| 6: [Property] Y # 58| -1: [TypeMention] int # 58| 3: [Getter] get_Y # 58| 4: [Setter] set_Y #-----| 2: (Parameters) # 58| 0: [Parameter] value -# 59| 6: [InstanceConstructor] ReadOnlyPoint +# 59| 7: [InstanceConstructor] ReadOnlyPoint #-----| 2: (Parameters) # 59| 0: [Parameter] x # 59| -1: [TypeMention] int @@ -94,15 +94,15 @@ properties.cs: # 62| 0: [PropertyCall] access to property Y # 62| 1: [ParameterAccess] access to parameter y # 67| 5: [Class] A -# 69| 5: [Field] y +# 69| 6: [Field] y # 69| -1: [TypeMention] int -# 70| 6: [Property] X +# 70| 7: [Property] X # 70| -1: [TypeMention] int # 70| 3: [Getter] get_X # 70| 4: [BlockStmt] {...} # 70| 0: [ReturnStmt] return ...; # 70| 0: [IntLiteral] 0 -# 71| 7: [Property] Y +# 71| 8: [Property] Y # 71| -1: [TypeMention] int # 73| 3: [Getter] get_Y # 73| 4: [BlockStmt] {...} @@ -116,7 +116,7 @@ properties.cs: # 74| 0: [AssignExpr] ... = ... # 74| 0: [FieldAccess] access to field y # 74| 1: [ParameterAccess] access to parameter value -# 76| 8: [Property] Z +# 76| 9: [Property] Z # 76| -1: [TypeMention] int # 76| 3: [Getter] get_Z # 76| 4: [Setter] set_Z @@ -125,9 +125,9 @@ properties.cs: # 79| 6: [Class] B #-----| 3: (Base types) # 79| 0: [TypeMention] A -# 81| 5: [Field] z +# 81| 6: [Field] z # 81| -1: [TypeMention] int -# 82| 6: [Property] X +# 82| 7: [Property] X # 82| -1: [TypeMention] int # 82| 3: [Getter] get_X # 82| 4: [BlockStmt] {...} @@ -136,7 +136,7 @@ properties.cs: # 82| 0: [PropertyCall] access to property X # 82| -1: [BaseAccess] base access # 82| 1: [IntLiteral] 1 -# 83| 7: [Property] Y +# 83| 8: [Property] Y # 83| -1: [TypeMention] int # 83| 3: [Setter] set_Y #-----| 2: (Parameters) @@ -152,7 +152,7 @@ properties.cs: # 83| 1: [IntLiteral] 0 # 83| 1: [IntLiteral] 0 # 83| 2: [ParameterAccess] access to parameter value -# 84| 8: [Property] Z +# 84| 9: [Property] Z # 84| -1: [TypeMention] int # 86| 3: [Getter] get_Z # 86| 4: [BlockStmt] {...} @@ -167,13 +167,13 @@ properties.cs: # 87| 0: [FieldAccess] access to field z # 87| 1: [ParameterAccess] access to parameter value # 91| 7: [Class] Test -# 93| 5: [Property] Init +# 93| 6: [Property] Init # 93| -1: [TypeMention] int # 93| 3: [Setter] set_Init #-----| 2: (Parameters) # 93| 0: [Parameter] value # 93| 4: [BlockStmt] {...} -# 94| 6: [Method] Main +# 94| 7: [Method] Main # 94| -1: [TypeMention] Void # 95| 4: [BlockStmt] {...} # 96| 0: [LocalVariableDeclStmt] ... ...; @@ -211,19 +211,19 @@ properties.cs: # 110| 9: [Class] ImplementsProperties #-----| 3: (Base types) # 110| 1: [TypeMention] InterfaceWithProperties -# 112| 5: [Property] Prop1 +# 112| 6: [Property] Prop1 # 112| -1: [TypeMention] int # 114| 3: [Getter] get_Prop1 # 114| 4: [BlockStmt] {...} # 114| 0: [ReturnStmt] return ...; # 114| 0: [IntLiteral] 0 -# 117| 6: [Property] Prop2 +# 117| 7: [Property] Prop2 # 117| -1: [TypeMention] int # 119| 3: [Setter] set_Prop2 #-----| 2: (Parameters) # 119| 0: [Parameter] value # 119| 4: [BlockStmt] {...} -# 122| 7: [Property] Prop2 +# 122| 8: [Property] Prop2 # 122| -1: [TypeMention] InterfaceWithProperties # 122| -1: [TypeMention] int # 124| 3: [Setter] set_Prop2 diff --git a/csharp/ql/test/library-tests/standalone/brokentypes/brokenTypes.expected b/csharp/ql/test/library-tests/standalone/brokentypes/brokenTypes.expected index bb3acba4f64c..524249492d34 100644 --- a/csharp/ql/test/library-tests/standalone/brokentypes/brokenTypes.expected +++ b/csharp/ql/test/library-tests/standalone/brokentypes/brokenTypes.expected @@ -1,7 +1,15 @@ | BrokenTypes.cs:2:14:2:13 | call to constructor Object | object | ObjectType | +| BrokenTypes.cs:2:14:2:13 | call to method | Void | VoidType | +| BrokenTypes.cs:2:14:2:13 | this access | | UnknownType | | BrokenTypes.cs:5:14:5:16 | call to constructor Object | object | ObjectType | +| BrokenTypes.cs:5:14:5:16 | call to method | Void | VoidType | +| BrokenTypes.cs:5:14:5:16 | this access | var | UnknownType | | BrokenTypes.cs:7:14:7:14 | call to constructor Object | object | ObjectType | +| BrokenTypes.cs:7:14:7:14 | call to method | Void | VoidType | +| BrokenTypes.cs:7:14:7:14 | this access | C | Class | | BrokenTypes.cs:13:14:13:20 | call to constructor Object | object | ObjectType | +| BrokenTypes.cs:13:14:13:20 | call to method | Void | VoidType | +| BrokenTypes.cs:13:14:13:20 | this access | Program | Class | | BrokenTypes.cs:17:11:17:12 | access to local variable x1 | C | Class | | BrokenTypes.cs:17:11:17:22 | C x1 = ... | C | Class | | BrokenTypes.cs:17:16:17:22 | object creation of type C | C | Class | diff --git a/csharp/ql/test/library-tests/standalone/controlflow/cfg.expected b/csharp/ql/test/library-tests/standalone/controlflow/cfg.expected index fab1dec11004..a42a3c662d4f 100644 --- a/csharp/ql/test/library-tests/standalone/controlflow/cfg.expected +++ b/csharp/ql/test/library-tests/standalone/controlflow/cfg.expected @@ -1,6 +1,8 @@ | ControlFlow.cs:3:7:3:9 | call to constructor Object | ControlFlow.cs:3:7:3:9 | {...} | -| ControlFlow.cs:3:7:3:9 | enter Cfg | ControlFlow.cs:3:7:3:9 | call to constructor Object | +| ControlFlow.cs:3:7:3:9 | call to method | ControlFlow.cs:3:7:3:9 | call to constructor Object | +| ControlFlow.cs:3:7:3:9 | enter Cfg | ControlFlow.cs:3:7:3:9 | this access | | ControlFlow.cs:3:7:3:9 | exit Cfg (normal) | ControlFlow.cs:3:7:3:9 | exit Cfg | +| ControlFlow.cs:3:7:3:9 | this access | ControlFlow.cs:3:7:3:9 | call to method | | ControlFlow.cs:3:7:3:9 | {...} | ControlFlow.cs:3:7:3:9 | exit Cfg (normal) | | ControlFlow.cs:5:10:5:10 | enter F | ControlFlow.cs:6:5:11:5 | {...} | | ControlFlow.cs:5:10:5:10 | exit F (normal) | ControlFlow.cs:5:10:5:10 | exit F | diff --git a/csharp/ql/test/library-tests/standalone/errorrecovery/ErrorCalls.expected b/csharp/ql/test/library-tests/standalone/errorrecovery/ErrorCalls.expected index a4a2aa6e7a83..791cd3450e85 100644 --- a/csharp/ql/test/library-tests/standalone/errorrecovery/ErrorCalls.expected +++ b/csharp/ql/test/library-tests/standalone/errorrecovery/ErrorCalls.expected @@ -1,10 +1,15 @@ | errors.cs:13:11:13:12 | errors.cs:13:11:13:12 | call to constructor Object | Object | +| errors.cs:13:11:13:12 | errors.cs:13:11:13:12 | call to method | | | errors.cs:22:31:22:40 | errors.cs:22:31:22:40 | call to method | none | | errors.cs:41:21:41:28 | errors.cs:41:21:41:28 | object creation of type C1 | C1 | | errors.cs:42:13:42:19 | errors.cs:42:13:42:19 | call to method m1 | m1 | | errors.cs:43:13:43:19 | errors.cs:43:13:43:19 | call to method m2 | m2 | | errors.cs:44:13:44:38 | errors.cs:44:13:44:38 | call to method WriteLine | WriteLine | | errors.cs:48:11:48:12 | errors.cs:48:11:48:12 | call to constructor Object | Object | +| errors.cs:48:11:48:12 | errors.cs:48:11:48:12 | call to method | | | errors.cs:51:17:51:25 | errors.cs:51:17:51:25 | object creation of type C2 | none | | errors.cs:65:11:65:12 | errors.cs:65:11:65:12 | call to constructor Object | Object | +| errors.cs:65:11:65:12 | errors.cs:65:11:65:12 | call to method | | | errors.cs:70:11:70:12 | errors.cs:70:11:70:12 | call to constructor Object | Object | +| errors.cs:70:11:70:12 | errors.cs:70:11:70:12 | call to method | | +| errors.cs:79:11:79:12 | errors.cs:79:11:79:12 | call to method | | diff --git a/csharp/ql/test/library-tests/standalone/externalLocationSink/externalLocationSink.expected b/csharp/ql/test/library-tests/standalone/externalLocationSink/externalLocationSink.expected index 8c4346f78328..3f724bc49022 100644 --- a/csharp/ql/test/library-tests/standalone/externalLocationSink/externalLocationSink.expected +++ b/csharp/ql/test/library-tests/standalone/externalLocationSink/externalLocationSink.expected @@ -4,5 +4,6 @@ compilationErrors | standalone.cs:16:12:16:18 | CS0104: 'ILogger' is an ambiguous reference between 'A.ILogger' and 'B.ILogger' | methodCalls +| standalone.cs:14:14:14:14 | call to method | | standalone.cs:20:9:20:21 | call to method | | standalone.cs:25:9:25:33 | call to method | diff --git a/csharp/ql/test/library-tests/statements/PrintAst.expected b/csharp/ql/test/library-tests/statements/PrintAst.expected index 6aea0fa286e4..59af8ce4a2ea 100644 --- a/csharp/ql/test/library-tests/statements/PrintAst.expected +++ b/csharp/ql/test/library-tests/statements/PrintAst.expected @@ -1,6 +1,6 @@ fixed.cs: # 3| [Class] Fixed -# 5| 5: [Method] fixed1 +# 5| 6: [Method] fixed1 # 5| -1: [TypeMention] Void # 6| 4: [BlockStmt] {...} # 7| 0: [LocalVariableDeclStmt] ... ...; @@ -52,7 +52,7 @@ fixed.cs: statements.cs: # 6| [NamespaceDeclaration] namespace ... { ... } # 8| 1: [Class] Class -# 11| 5: [Method] Main +# 11| 6: [Method] Main # 11| -1: [TypeMention] Void # 12| 4: [BlockStmt] {...} # 13| 0: [LabelStmt] block: @@ -60,7 +60,7 @@ statements.cs: # 15| 0: [BlockStmt] {...} # 17| 1: [BlockStmt] {...} # 18| 0: [BlockStmt] {...} -# 24| 6: [Method] MainEmpty +# 24| 7: [Method] MainEmpty # 24| -1: [TypeMention] Void # 25| 4: [BlockStmt] {...} # 26| 0: [LocalVariableDeclStmt] ... ...; @@ -75,7 +75,7 @@ statements.cs: # 28| 4: [IfStmt] if (...) ... # 28| 0: [BoolLiteral] true # 28| 1: [EmptyStmt] ; -# 31| 7: [Method] MainLocalVarDecl +# 31| 8: [Method] MainLocalVarDecl # 31| -1: [TypeMention] Void # 32| 4: [BlockStmt] {...} # 33| 0: [LocalVariableDeclStmt] ... ...; @@ -113,7 +113,7 @@ statements.cs: # 38| -1: [TypeMention] string # 38| 0: [LocalVariableAccess] access to local variable y # 38| 1: [StringLiteralUtf16] "test" -# 41| 8: [Method] MainLocalConstDecl +# 41| 9: [Method] MainLocalConstDecl # 41| -1: [TypeMention] Void # 42| 4: [BlockStmt] {...} # 43| 0: [LocalConstantDeclStmt] const ... ...; @@ -139,7 +139,7 @@ statements.cs: # 45| 1: [LocalVariableAccess] access to local variable r # 45| 1: [CastExpr] (...) ... # 45| 1: [LocalVariableAccess] access to local variable r -# 48| 9: [Method] MainExpr +# 48| 10: [Method] MainExpr # 48| -1: [TypeMention] Void # 49| 4: [BlockStmt] {...} # 50| 0: [LocalVariableDeclStmt] ... ...; @@ -162,7 +162,7 @@ statements.cs: # 54| -1: [TypeAccess] access to type Console # 54| 0: [TypeMention] Console # 54| 0: [LocalVariableAccess] access to local variable i -# 57| 10: [Method] MainIf +# 57| 11: [Method] MainIf # 57| -1: [TypeMention] Void #-----| 2: (Parameters) # 57| 0: [Parameter] args @@ -186,7 +186,7 @@ statements.cs: # 65| -1: [TypeAccess] access to type Console # 65| 0: [TypeMention] Console # 65| 0: [StringLiteralUtf16] "One or more arguments" -# 69| 11: [Method] MainSwitch +# 69| 12: [Method] MainSwitch # 69| -1: [TypeMention] Void #-----| 2: (Parameters) # 69| 0: [Parameter] args @@ -226,7 +226,7 @@ statements.cs: # 81| 1: [CastExpr] (...) ... # 81| 1: [LocalVariableAccess] access to local variable n # 82| 8: [BreakStmt] break; -# 86| 12: [Method] StringSwitch +# 86| 13: [Method] StringSwitch # 86| -1: [TypeMention] int #-----| 2: (Parameters) # 86| 0: [Parameter] foo @@ -270,7 +270,7 @@ statements.cs: # 106| 0: [IntLiteral] 7 # 108| 1: [ReturnStmt] return ...; # 108| 0: [IntLiteral] 7 -# 111| 13: [Method] MainWhile +# 111| 14: [Method] MainWhile # 111| -1: [TypeMention] Void #-----| 2: (Parameters) # 111| 0: [Parameter] args @@ -298,7 +298,7 @@ statements.cs: # 117| 1: [ExprStmt] ...; # 117| 0: [PostIncrExpr] ...++ # 117| 0: [LocalVariableAccess] access to local variable i -# 121| 14: [Method] MainDo +# 121| 15: [Method] MainDo # 121| -1: [TypeMention] Void # 122| 4: [BlockStmt] {...} # 123| 0: [LocalVariableDeclStmt] ... ...; @@ -324,7 +324,7 @@ statements.cs: # 127| -1: [TypeAccess] access to type Console # 127| 0: [TypeMention] Console # 127| 0: [LocalVariableAccess] access to local variable s -# 131| 15: [Method] MainFor +# 131| 16: [Method] MainFor # 131| -1: [TypeMention] Void #-----| 2: (Parameters) # 131| 0: [Parameter] args @@ -350,7 +350,7 @@ statements.cs: # 135| 0: [ArrayAccess] access to array element # 135| -1: [ParameterAccess] access to parameter args # 135| 0: [LocalVariableAccess] access to local variable i -# 139| 16: [Method] MainForeach +# 139| 17: [Method] MainForeach # 139| -1: [TypeMention] Void #-----| 2: (Parameters) # 139| 0: [Parameter] args @@ -367,7 +367,7 @@ statements.cs: # 143| -1: [TypeAccess] access to type Console # 143| 0: [TypeMention] Console # 143| 0: [LocalVariableAccess] access to local variable s -# 147| 17: [Method] MainBreak +# 147| 18: [Method] MainBreak # 147| -1: [TypeMention] Void # 148| 4: [BlockStmt] {...} # 149| 0: [WhileStmt] while (...) ... @@ -390,7 +390,7 @@ statements.cs: # 153| -1: [TypeAccess] access to type Console # 153| 0: [TypeMention] Console # 153| 0: [LocalVariableAccess] access to local variable s -# 157| 18: [Method] MainContinue +# 157| 19: [Method] MainContinue # 157| -1: [TypeMention] Void #-----| 2: (Parameters) # 157| 0: [Parameter] args @@ -423,7 +423,7 @@ statements.cs: # 162| 0: [ArrayAccess] access to array element # 162| -1: [ParameterAccess] access to parameter args # 162| 0: [LocalVariableAccess] access to local variable i -# 166| 19: [Method] MainGoto +# 166| 20: [Method] MainGoto # 166| -1: [TypeMention] Void #-----| 2: (Parameters) # 166| 0: [Parameter] args @@ -452,7 +452,7 @@ statements.cs: # 171| 1: [PropertyCall] access to property Length # 171| -1: [ParameterAccess] access to parameter args # 171| 1: [GotoLabelStmt] goto ...; -# 174| 20: [Method] Add +# 174| 21: [Method] Add # 174| -1: [TypeMention] int #-----| 2: (Parameters) # 174| 0: [Parameter] a @@ -464,7 +464,7 @@ statements.cs: # 176| 0: [AddExpr] ... + ... # 176| 0: [ParameterAccess] access to parameter a # 176| 1: [ParameterAccess] access to parameter b -# 178| 21: [Method] MainReturn +# 178| 22: [Method] MainReturn # 178| -1: [TypeMention] Void # 179| 4: [BlockStmt] {...} # 180| 0: [ExprStmt] ...; @@ -475,7 +475,7 @@ statements.cs: # 180| 0: [IntLiteral] 1 # 180| 1: [IntLiteral] 2 # 181| 1: [ReturnStmt] return ...; -# 184| 22: [Method] Range +# 184| 23: [Method] Range # 184| -1: [TypeMention] IEnumerable # 184| 1: [TypeMention] int #-----| 2: (Parameters) @@ -498,7 +498,7 @@ statements.cs: # 188| 0: [YieldReturnStmt] yield return ...; # 188| 0: [LocalVariableAccess] access to local variable i # 190| 1: [YieldBreakStmt] yield break; -# 192| 23: [Method] MainYield +# 192| 24: [Method] MainYield # 192| -1: [TypeMention] Void # 193| 4: [BlockStmt] {...} # 194| 0: [ForeachStmt] foreach (... ... in ...) ... @@ -514,7 +514,7 @@ statements.cs: # 196| -1: [TypeAccess] access to type Console # 196| 0: [TypeMention] Console # 196| 0: [LocalVariableAccess] access to local variable x -# 200| 24: [Method] Divide +# 200| 25: [Method] Divide # 200| -1: [TypeMention] double #-----| 2: (Parameters) # 200| 0: [Parameter] x @@ -534,7 +534,7 @@ statements.cs: # 203| 0: [DivExpr] ... / ... # 203| 0: [ParameterAccess] access to parameter x # 203| 1: [ParameterAccess] access to parameter y -# 205| 25: [Method] MainTryThrow +# 205| 26: [Method] MainTryThrow # 205| -1: [TypeMention] Void #-----| 2: (Parameters) # 205| 0: [Parameter] args @@ -603,7 +603,7 @@ statements.cs: # 223| -1: [TypeAccess] access to type Console # 223| 0: [TypeMention] Console # 223| 0: [StringLiteralUtf16] "Exception" -# 231| 26: [Method] MainCheckedUnchecked +# 231| 27: [Method] MainCheckedUnchecked # 231| -1: [TypeMention] Void # 232| 4: [BlockStmt] {...} # 233| 0: [LocalVariableDeclStmt] ... ...; @@ -631,10 +631,10 @@ statements.cs: # 240| 0: [AddExpr] ... + ... # 240| 0: [LocalVariableAccess] access to local variable i # 240| 1: [IntLiteral] 1 -# 244| 27: [Class] AccountLock -# 246| 5: [Field] balance +# 244| 28: [Class] AccountLock +# 246| 6: [Field] balance # 246| -1: [TypeMention] decimal -# 247| 6: [Method] Withdraw +# 247| 7: [Method] Withdraw # 247| -1: [TypeMention] Void #-----| 2: (Parameters) # 247| 0: [Parameter] amount @@ -656,7 +656,7 @@ statements.cs: # 255| 0: [AssignSubExpr] ... -= ... # 255| 0: [FieldAccess] access to field balance # 255| 1: [ParameterAccess] access to parameter amount -# 260| 28: [Method] MainUsing +# 260| 29: [Method] MainUsing # 260| -1: [TypeMention] Void # 261| 4: [BlockStmt] {...} # 262| 0: [UsingBlockStmt] using (...) {...} @@ -686,7 +686,7 @@ statements.cs: # 268| 0: [TypeMention] File # 268| 0: [StringLiteralUtf16] "test.txt" # 269| 1: [BlockStmt] {...} -# 273| 29: [Method] MainLabeled +# 273| 30: [Method] MainLabeled # 273| -1: [TypeMention] Void # 274| 4: [BlockStmt] {...} # 275| 0: [GotoLabelStmt] goto ...; @@ -700,11 +700,11 @@ statements.cs: # 278| 0: [AssignExpr] ... = ... # 278| 0: [LocalVariableAccess] access to local variable x # 278| 1: [IntLiteral] 9 -# 281| 30: [Field] lockObject +# 281| 31: [Field] lockObject # 281| -1: [TypeMention] Lock # 281| 1: [ObjectCreation] object creation of type Lock # 281| 0: [TypeMention] Lock -# 283| 31: [Method] LockMethod +# 283| 32: [Method] LockMethod # 283| -1: [TypeMention] Void # 284| 4: [BlockStmt] {...} # 285| 0: [LockStmt] lock (...) {...} diff --git a/csharp/ql/test/library-tests/stringinterpolation/PrintAst.expected b/csharp/ql/test/library-tests/stringinterpolation/PrintAst.expected index 6529f9feed5c..4e975eedd4c0 100644 --- a/csharp/ql/test/library-tests/stringinterpolation/PrintAst.expected +++ b/csharp/ql/test/library-tests/stringinterpolation/PrintAst.expected @@ -1,6 +1,6 @@ StringInterpolation.cs: # 3| [Class] MyStringInterpolationClass -# 6| 5: [Method] M +# 6| 6: [Method] M # 6| -1: [TypeMention] Void # 7| 4: [BlockStmt] {...} # 8| 0: [LocalVariableDeclStmt] ... ...; diff --git a/csharp/ql/test/library-tests/structuralcomparison/structuralComparison.expected b/csharp/ql/test/library-tests/structuralcomparison/structuralComparison.expected index 9d3c935266a9..0f131d8c25cb 100644 --- a/csharp/ql/test/library-tests/structuralcomparison/structuralComparison.expected +++ b/csharp/ql/test/library-tests/structuralcomparison/structuralComparison.expected @@ -52,6 +52,8 @@ same | StructuralComparison.cs:50:18:50:21 | access to property Prop | StructuralComparison.cs:51:18:51:26 | access to property Prop | gvn | StructuralComparison.cs:3:14:3:18 | call to constructor Object | (kind:Expr(79)) | +| StructuralComparison.cs:3:14:3:18 | call to method | ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,)) | +| StructuralComparison.cs:3:14:3:18 | this access | (kind:Expr(12),false,Class) | | StructuralComparison.cs:3:14:3:18 | {...} | (kind:Stmt(1)) | | StructuralComparison.cs:5:26:5:26 | access to field x | (kind:Expr(16),true,x) | | StructuralComparison.cs:5:26:5:26 | this access | (kind:Expr(12)) | @@ -148,8 +150,12 @@ gvn | StructuralComparison.cs:28:15:28:15 | access to field x | (kind:Expr(16),true,x) | | StructuralComparison.cs:28:15:28:15 | this access | (kind:Expr(12),false,Class) | | StructuralComparison.cs:32:14:32:22 | call to constructor Object | (kind:Expr(79)) | +| StructuralComparison.cs:32:14:32:22 | call to method | ((kind:Expr(12),false,BaseClass) :: (kind:Expr(24),false,)) | +| StructuralComparison.cs:32:14:32:22 | this access | (kind:Expr(12),false,BaseClass) | | StructuralComparison.cs:32:14:32:22 | {...} | (kind:Stmt(1)) | | StructuralComparison.cs:38:14:38:25 | call to constructor BaseClass | (kind:Expr(79)) | +| StructuralComparison.cs:38:14:38:25 | call to method | ((kind:Expr(12),false,DerivedClass) :: (kind:Expr(24),false,)) | +| StructuralComparison.cs:38:14:38:25 | this access | (kind:Expr(12),false,DerivedClass) | | StructuralComparison.cs:38:14:38:25 | {...} | (kind:Stmt(1)) | | StructuralComparison.cs:41:5:45:5 | {...} | ((((kind:Expr(14),false,x3) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,x2) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,x1) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (kind:Stmt(1))))) | | StructuralComparison.cs:42:9:42:28 | ... ...; | (((kind:Expr(14),false,x1) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | diff --git a/csharp/ql/test/library-tests/types/PrintAst.expected b/csharp/ql/test/library-tests/types/PrintAst.expected index 47c3c11261bf..c6dc07ab1a56 100644 --- a/csharp/ql/test/library-tests/types/PrintAst.expected +++ b/csharp/ql/test/library-tests/types/PrintAst.expected @@ -1,91 +1,91 @@ types.cs: # 1| [NamespaceDeclaration] namespace ... { ... } # 3| 1: [Class] Class -# 5| 5: [Method] BoolType +# 5| 6: [Method] BoolType # 5| -1: [TypeMention] bool -# 6| 6: [Method] CharType +# 6| 7: [Method] CharType # 6| -1: [TypeMention] char -# 7| 7: [Method] DecimalType +# 7| 8: [Method] DecimalType # 7| -1: [TypeMention] decimal -# 8| 8: [Method] SByteType +# 8| 9: [Method] SByteType # 8| -1: [TypeMention] sbyte -# 9| 9: [Method] ShortType +# 9| 10: [Method] ShortType # 9| -1: [TypeMention] short -# 10| 10: [Method] IntType +# 10| 11: [Method] IntType # 10| -1: [TypeMention] int -# 11| 11: [Method] LongType +# 11| 12: [Method] LongType # 11| -1: [TypeMention] long -# 12| 12: [Method] ByteType +# 12| 13: [Method] ByteType # 12| -1: [TypeMention] byte -# 13| 13: [Method] UShortType +# 13| 14: [Method] UShortType # 13| -1: [TypeMention] ushort -# 14| 14: [Method] UIntType +# 14| 15: [Method] UIntType # 14| -1: [TypeMention] uint -# 15| 15: [Method] ULongType +# 15| 16: [Method] ULongType # 15| -1: [TypeMention] ulong -# 16| 16: [Method] FloatType +# 16| 17: [Method] FloatType # 16| -1: [TypeMention] float -# 17| 17: [Method] DoubleType +# 17| 18: [Method] DoubleType # 17| -1: [TypeMention] double -# 18| 18: [Method] NullableType +# 18| 19: [Method] NullableType # 18| -1: [TypeMention] Struct? # 18| 1: [TypeMention] Struct -# 19| 19: [Method] VoidType +# 19| 20: [Method] VoidType # 19| -1: [TypeMention] Void -# 20| 20: [Method] ArrayType +# 20| 21: [Method] ArrayType # 20| -1: [TypeMention] Class[] # 20| 1: [TypeMention] Class -# 21| 21: [Method] ArrayArrayType +# 21| 22: [Method] ArrayArrayType # 21| -1: [TypeMention] Class[][] # 21| 1: [TypeMention] Class -# 22| 22: [Method] ConstructedClassType +# 22| 23: [Method] ConstructedClassType # 22| -1: [TypeMention] GenericClass # 22| 1: [TypeMention] Class -# 23| 23: [Method] ConstructedInterfaceType +# 23| 24: [Method] ConstructedInterfaceType # 23| -1: [TypeMention] GenericInterface # 23| 1: [TypeMention] Class -# 24| 24: [Method] ConstructedStructType +# 24| 25: [Method] ConstructedStructType # 24| -1: [TypeMention] GenericStruct # 24| 1: [TypeMention] Class -# 25| 25: [Method] DelegateType +# 25| 26: [Method] DelegateType # 25| -1: [TypeMention] Delegate -# 26| 26: [Method] PointerType +# 26| 27: [Method] PointerType # 26| -1: [TypeMention] byte* # 26| 1: [TypeMention] byte -# 27| 27: [Method] PointerPointerType +# 27| 28: [Method] PointerPointerType # 27| -1: [TypeMention] byte** # 27| 1: [TypeMention] byte -# 28| 28: [Method] PointerArrayArrayType +# 28| 29: [Method] PointerArrayArrayType # 28| -1: [TypeMention] Byte*[][] # 28| 1: [TypeMention] byte -# 29| 29: [Method] NullableArrayType +# 29| 30: [Method] NullableArrayType # 29| -1: [TypeMention] Nullable[] # 29| 1: [TypeMention] byte? # 29| 1: [TypeMention] byte -# 30| 30: [Method] NullableArrayArrayType +# 30| 31: [Method] NullableArrayArrayType # 30| -1: [TypeMention] Nullable[][] # 30| 1: [TypeMention] byte? # 30| 1: [TypeMention] byte -# 32| 31: [Method] ArrayNullArrayType1 +# 32| 32: [Method] ArrayNullArrayType1 # 32| -1: [TypeMention] Byte[][] # 32| 1: [TypeMention] byte -# 33| 32: [Method] ArrayNullArrayType2 +# 33| 33: [Method] ArrayNullArrayType2 # 33| -1: [TypeMention] Object[][] # 33| 1: [TypeMention] object -# 34| 33: [Method] ArrayNullableRefType +# 34| 34: [Method] ArrayNullableRefType # 34| -1: [TypeMention] Object[] # 34| 1: [TypeMention] object -# 35| 34: [Method] NullableRefType +# 35| 35: [Method] NullableRefType # 35| -1: [TypeMention] object -# 37| 35: [Method] NullableArrayArrayType2 +# 37| 36: [Method] NullableArrayArrayType2 # 37| -1: [TypeMention] Nullable[][] # 37| 1: [TypeMention] byte? # 37| 1: [TypeMention] byte -# 38| 36: [Method] Map +# 38| 37: [Method] Map # 38| -1: [TypeMention] Map # 38| 1: [TypeMention] string # 38| 2: [TypeMention] Class -# 39| 37: [Method] Null +# 39| 38: [Method] Null # 39| -1: [TypeMention] Class # 40| 4: [BlockStmt] {...} # 41| 0: [ReturnStmt] return ...; @@ -112,21 +112,21 @@ types.cs: # 59| 1: [DefaultAttribute] [InlineArray(...)] # 59| -1: [TypeMention] InlineArrayAttribute # 59| 0: [IntLiteral] 10 -# 62| 5: [Field] myInlineArrayElements +# 62| 6: [Field] myInlineArrayElements # 62| -1: [TypeMention] int # 66| 11: [InlineArrayType] MyMultiDimensionalInlineArray #-----| 0: (Attributes) # 65| 1: [DefaultAttribute] [InlineArray(...)] # 65| -1: [TypeMention] InlineArrayAttribute # 65| 0: [IntLiteral] 5 -# 68| 5: [Field] myMultiDimentionalInlineArrayElements +# 68| 6: [Field] myMultiDimentionalInlineArrayElements # 68| -1: [TypeMention] MyInlineArray # 72| 12: [InlineArrayType] MyMultiDimensionalInlineArray2 #-----| 0: (Attributes) # 71| 1: [DefaultAttribute] [InlineArray(...)] # 71| -1: [TypeMention] InlineArrayAttribute # 71| 0: [IntLiteral] 7 -# 74| 5: [Field] myMultiDimentionalInlineArrayElements +# 74| 6: [Field] myMultiDimentionalInlineArrayElements # 74| -1: [TypeMention] String[] # 74| 1: [TypeMention] string # 78| 13: [InlineArrayType] MyMultiDimensionalInlineArray3 @@ -134,7 +134,7 @@ types.cs: # 77| 1: [DefaultAttribute] [InlineArray(...)] # 77| -1: [TypeMention] InlineArrayAttribute # 77| 0: [IntLiteral] 4 -# 80| 5: [Field] myMultiDimentionalInlineArrayElements +# 80| 6: [Field] myMultiDimentionalInlineArrayElements # 80| -1: [TypeMention] Object[,] # 80| 1: [TypeMention] object # 84| 14: [InlineArrayType] MyMultiDimensionalInlineArray4 @@ -142,6 +142,6 @@ types.cs: # 83| 1: [DefaultAttribute] [InlineArray(...)] # 83| -1: [TypeMention] InlineArrayAttribute # 83| 0: [IntLiteral] 11 -# 86| 5: [Field] myMultiDimentionalInlineArrayElements +# 86| 6: [Field] myMultiDimentionalInlineArrayElements # 86| -1: [TypeMention] Object[][] # 86| 1: [TypeMention] object diff --git a/csharp/ql/test/library-tests/unsafe/PrintAst.expected b/csharp/ql/test/library-tests/unsafe/PrintAst.expected index d18e3b330724..76e1387cb762 100644 --- a/csharp/ql/test/library-tests/unsafe/PrintAst.expected +++ b/csharp/ql/test/library-tests/unsafe/PrintAst.expected @@ -1,7 +1,7 @@ unsafe.cs: # 1| [NamespaceDeclaration] namespace ... { ... } # 3| 1: [Class] Test -# 5| 5: [Method] Main +# 5| 6: [Method] Main # 5| -1: [TypeMention] Void #-----| 2: (Parameters) # 5| 0: [Parameter] args @@ -93,7 +93,7 @@ unsafe.cs: # 19| 1: [SubExpr] ... - ... # 19| 0: [LocalVariableAccess] access to local variable ip # 19| 1: [LocalVariableAccess] access to local variable ip42 -# 22| 6: [Method] f +# 22| 7: [Method] f # 22| -1: [TypeMention] Void #-----| 2: (Parameters) # 22| 0: [Parameter] p @@ -114,10 +114,10 @@ unsafe.cs: # 26| 0: [AddExpr] ... + ... # 26| 0: [ParameterAccess] access to parameter p # 26| 1: [IntLiteral] 0 -# 30| 7: [Method] g +# 30| 8: [Method] g # 30| -1: [TypeMention] Void # 30| 4: [BlockStmt] {...} -# 32| 8: [Method] h +# 32| 9: [Method] h # 32| -1: [TypeMention] Void # 33| 4: [BlockStmt] {...} # 34| 0: [UnsafeStmt] unsafe {...}