Files
codeql/csharp/ql/test/library-tests/csharp7/PrintAst.expected
2025-12-02 13:49:16 +01:00

910 lines
44 KiB
Plaintext

CSharp7.cs:
# 5| [Class] Literals
# 7| 6: [Field] x
# 7| -1: [TypeMention] int
# 7| 1: [IntLiteral] 11
# 8| 7: [Field] y
# 8| -1: [TypeMention] int
# 8| 1: [IntLiteral] 123456
# 9| 8: [Field] z
# 9| -1: [TypeMention] int
# 9| 1: [IntLiteral] 128
# 12| [Class] ExpressionBodiedMembers
# 14| 5: [Field] field
# 14| -1: [TypeMention] int
# 14| 1: [IntLiteral] 0
# 15| 6: [Method] Foo
# 15| -1: [TypeMention] int
# 15| 4: [FieldAccess] access to field field
# 16| 7: [Property] P
# 16| -1: [TypeMention] int
# 16| 3: [Getter] get_P
# 16| 4: [IntLiteral] 5
# 17| 8: [Property] Q
# 17| -1: [TypeMention] int
# 19| 3: [Getter] get_Q
# 19| 4: [MethodCall] call to method Foo
# 20| 4: [Setter] set_Q
#-----| 2: (Parameters)
# 20| 0: [Parameter] value
# 20| 4: [AssignExpr] ... = ...
# 20| 0: [FieldAccess] access to field field
# 20| 1: [ParameterAccess] access to parameter value
# 22| 9: [InstanceConstructor] ExpressionBodiedMembers
# 22| 3: [ConstructorInitializer] call to constructor ExpressionBodiedMembers
# 22| 0: [IntLiteral] 1
# 22| 4: [BlockStmt] {...}
# 23| 10: [InstanceConstructor] ExpressionBodiedMembers
#-----| 2: (Parameters)
# 23| 0: [Parameter] x
# 23| -1: [TypeMention] int
# 23| 4: [MethodCall] call to method Foo
# 24| 11: [Destructor] ~ExpressionBodiedMembers
# 24| 4: [MethodCall] call to method Foo
# 27| [Class] ThrowExpr
# 29| 6: [Method] Throw
# 29| -1: [TypeMention] int
#-----| 2: (Parameters)
# 29| 0: [Parameter] i
# 29| -1: [TypeMention] int
# 30| 4: [BlockStmt] {...}
# 31| 0: [ReturnStmt] return ...;
# 31| 0: [ConditionalExpr] ... ? ... : ...
# 31| 0: [GTExpr] ... > ...
# 31| 0: [ParameterAccess] access to parameter i
# 31| 1: [IntLiteral] 0
# 31| 1: [ParameterAccess] access to parameter i
# 31| 2: [ThrowExpr] throw ...
# 31| 0: [ObjectCreation] object creation of type ArgumentException
# 31| -1: [TypeMention] ArgumentException
# 31| 0: [StringLiteralUtf16] "i"
# 35| [Class] OutVariables
# 37| 6: [Method] F
# 37| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 37| 0: [Parameter] x
# 37| -1: [TypeMention] string
# 38| 4: [BlockStmt] {...}
# 39| 0: [ExprStmt] ...;
# 39| 0: [AssignExpr] ... = ...
# 39| 0: [ParameterAccess] access to parameter x
# 39| 1: [StringLiteralUtf16] "tainted"
# 42| 7: [Method] G
# 42| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 42| 0: [Parameter] x
# 42| -1: [TypeMention] string
# 42| 1: [Parameter] y
# 42| -1: [TypeMention] string
# 43| 4: [BlockStmt] {...}
# 44| 0: [ExprStmt] ...;
# 44| 0: [AssignExpr] ... = ...
# 44| 0: [ParameterAccess] access to parameter y
# 44| 1: [ParameterAccess] access to parameter x
# 47| 8: [Method] G
# 47| -1: [TypeMention] Void
# 48| 4: [BlockStmt] {...}
# 49| 0: [ExprStmt] ...;
# 49| 0: [MethodCall] call to method F
# 49| 0: [LocalVariableAccess,LocalVariableDeclExpr] String t1
# 50| 1: [ExprStmt] ...;
# 50| 0: [MethodCall] call to method F
# 50| 0: [LocalVariableAccess,LocalVariableDeclExpr] String t2
# 51| 2: [LocalVariableDeclStmt] ... ...;
# 51| 0: [LocalVariableDeclAndInitExpr] String t3 = ...
# 51| -1: [TypeMention] string
# 51| 0: [LocalVariableAccess] access to local variable t3
# 51| 1: [LocalVariableAccess] access to local variable t1
# 52| 3: [ExprStmt] ...;
# 52| 0: [MethodCall] call to method F
# 52| 0: [LocalVariableAccess] access to local variable t1
# 53| 4: [ExprStmt] ...;
# 53| 0: [AssignExpr] ... = ...
# 53| 0: [LocalVariableAccess] access to local variable t3
# 53| 1: [LocalVariableAccess] access to local variable t1
# 54| 5: [ExprStmt] ...;
# 54| 0: [AssignExpr] ... = ...
# 54| 0: [LocalVariableAccess] access to local variable t3
# 54| 1: [LocalVariableAccess] access to local variable t2
# 55| 6: [ExprStmt] ...;
# 55| 0: [MethodCall] call to method G
# 55| 0: [StringLiteralUtf16] "tainted"
# 55| 1: [LocalVariableAccess,LocalVariableDeclExpr] String t4
# 56| 7: [LocalVariableDeclStmt] ... ...;
# 56| 0: [LocalVariableDeclAndInitExpr] String t5 = ...
# 56| -1: [TypeMention] string
# 56| 0: [LocalVariableAccess] access to local variable t5
# 56| 1: [LocalVariableAccess] access to local variable t4
# 60| [Class] Tuples
# 62| 6: [Method] F
# 62| -1: [TypeMention] (int, int)
# 62| 1: [TypeMention] int
# 62| 2: [TypeMention] int
# 63| 4: [BlockStmt] {...}
# 64| 0: [ReturnStmt] return ...;
# 64| 0: [TupleExpr] (..., ...)
# 64| 0: [IntLiteral] 1
# 64| 1: [IntLiteral] 2
# 67| 7: [Method] Expressions
# 67| -1: [TypeMention] Void
# 68| 4: [BlockStmt] {...}
# 69| 0: [ExprStmt] ...;
# 69| 0: [AssignExpr] ... = ...
# 69| 0: [TupleExpr] (..., ...)
# 69| 0: [LocalVariableDeclExpr] Int32 x
# 69| 1: [LocalVariableDeclExpr] Int32 y
# 69| 1: [MethodCall] call to method F
# 70| 1: [LocalVariableDeclStmt] ... ...;
# 70| 0: [LocalVariableDeclAndInitExpr] (Int32,Int32) z = ...
# 70| -1: [TypeMention] (int, int)
# 70| 0: [LocalVariableAccess] access to local variable z
# 70| 1: [MethodCall] call to method F
# 71| 2: [ExprStmt] ...;
# 71| 0: [AssignExpr] ... = ...
# 71| 0: [TupleExpr] (..., ...)
# 71| 0: [LocalVariableAccess] access to local variable x
# 71| 1: [LocalVariableAccess] access to local variable y
# 71| 1: [MethodCall] call to method F
# 72| 3: [ExprStmt] ...;
# 72| 0: [AssignExpr] ... = ...
# 72| 0: [LocalVariableAccess] access to local variable x
# 72| 1: [FieldAccess] access to field Item1
# 72| -1: [MethodCall] call to method F
# 73| 4: [ExprStmt] ...;
# 73| 0: [AssignExpr] ... = ...
# 73| 0: [TupleExpr] (..., ...)
# 73| 0: [LocalVariableAccess] access to local variable x
# 73| 1: [LocalVariableAccess] access to local variable y
# 73| 2: [FieldAccess] access to field Item1
# 73| -1: [LocalVariableAccess] access to local variable z
# 73| 1: [TupleExpr] (..., ...)
# 73| 0: [IntLiteral] 1
# 73| 1: [IntLiteral] 2
# 73| 2: [IntLiteral] 3
# 74| 5: [ExprStmt] ...;
# 74| 0: [AssignExpr] ... = ...
# 74| 0: [TupleExpr] (..., ...)
# 74| 0: [LocalVariableAccess] access to local variable x
# 74| 1: [LocalVariableAccess] access to local variable y
# 74| 1: [AssignExpr] ... = ...
# 74| 0: [TupleExpr] (..., ...)
# 74| 0: [LocalVariableAccess] access to local variable x
# 74| 1: [LocalVariableAccess] access to local variable y
# 74| 1: [TupleExpr] (..., ...)
# 74| 0: [IntLiteral] 1
# 74| 1: [IntLiteral] 2
# 75| 6: [ExprStmt] ...;
# 75| 0: [AssignExpr] ... = ...
# 75| 0: [TupleExpr] (..., ...)
# 75| 0: [LocalVariableDeclExpr] Int32 a
# 75| 1: [TupleExpr] (..., ...)
# 75| 0: [LocalVariableDeclExpr] Int32 b
# 75| 1: [LocalVariableDeclExpr] Int32 c
# 75| 1: [TupleExpr] (..., ...)
# 75| 0: [IntLiteral] 1
# 75| 1: [LocalVariableAccess] access to local variable z
# 76| 7: [ExprStmt] ...;
# 76| 0: [AssignExpr] ... = ...
# 76| 0: [TupleExpr] (..., ...)
# 76| 0: [LocalVariableAccess] access to local variable a
# 76| 1: [TupleExpr] (..., ...)
# 76| 0: [LocalVariableAccess] access to local variable b
# 76| 1: [LocalVariableAccess] access to local variable c
# 76| 1: [TupleExpr] (..., ...)
# 76| 0: [LocalVariableAccess] access to local variable b
# 76| 1: [TupleExpr] (..., ...)
# 76| 0: [LocalVariableAccess] access to local variable c
# 76| 1: [LocalVariableAccess] access to local variable a
# 77| 8: [ExprStmt] ...;
# 77| 0: [AssignExpr] ... = ...
# 77| 0: [TupleExpr] (..., ...)
# 77| 0: [LocalVariableDeclExpr] String i
# 77| 1: [LocalVariableDeclExpr] Int32 j
# 77| 1: [TupleExpr] (..., ...)
# 77| 0: [StringLiteralUtf16] ""
# 77| 1: [LocalVariableAccess] access to local variable x
# 80| 8: [Method] I
# 80| -1: [TypeMention] string
#-----| 2: (Parameters)
# 80| 0: [Parameter] x
# 80| -1: [TypeMention] string
# 81| 4: [BlockStmt] {...}
# 82| 0: [ReturnStmt] return ...;
# 82| 0: [FieldAccess] access to field Item1
# 82| -1: [TupleExpr] (..., ...)
# 82| 0: [ParameterAccess] access to parameter x
# 82| 1: [IntLiteral] 2
# 85| 9: [Method] TaintFlow
# 85| -1: [TypeMention] Void
# 86| 4: [BlockStmt] {...}
# 87| 0: [LocalVariableDeclStmt] ... ...;
# 87| 0: [LocalVariableDeclAndInitExpr] (String,String) t1 = ...
# 87| -1: [TypeMention] (string, string)
# 87| 0: [LocalVariableAccess] access to local variable t1
# 87| 1: [TupleExpr] (..., ...)
# 87| 0: [StringLiteralUtf16] "tainted"
# 87| 1: [StringLiteralUtf16] "X2"
# 88| 1: [ExprStmt] ...;
# 88| 0: [AssignExpr] ... = ...
# 88| 0: [TupleExpr] (..., ...)
# 88| 0: [LocalVariableDeclExpr] String t2
# 88| 1: [LocalVariableDeclExpr] String t3
# 88| 1: [LocalVariableAccess] access to local variable t1
# 89| 2: [LocalVariableDeclStmt] ... ...;
# 89| 0: [LocalVariableDeclAndInitExpr] String t4 = ...
# 89| -1: [TypeMention] string
# 89| 0: [LocalVariableAccess] access to local variable t4
# 89| 1: [LocalVariableAccess] access to local variable t3
# 90| 3: [LocalVariableDeclStmt] ... ...;
# 90| 0: [LocalVariableDeclAndInitExpr] String t5 = ...
# 90| -1: [TypeMention] string
# 90| 0: [LocalVariableAccess] access to local variable t5
# 90| 1: [MethodCall] call to method I
# 90| 0: [FieldAccess] access to field Item1
# 90| -1: [LocalVariableAccess] access to local variable t1
# 93| 10: [Method] TupleExprNode
# 93| -1: [TypeMention] Void
# 94| 4: [BlockStmt] {...}
# 95| 0: [LocalVariableDeclStmt] ... ...;
# 95| 0: [LocalVariableDeclAndInitExpr] (Int32,String) m1 = ...
# 95| -1: [TypeMention] (int, string)
# 95| 0: [LocalVariableAccess] access to local variable m1
# 95| 1: [TupleExpr] (..., ...)
# 95| 0: [IntLiteral] 1
# 95| 1: [StringLiteralUtf16] "TupleExprNode1"
# 96| 1: [LocalVariableDeclStmt] ... ...;
# 96| 0: [LocalVariableDeclAndInitExpr] (Int32,(String,Int32)) m2 = ...
# 96| -1: [TypeMention] (int, (string, int))
# 96| 0: [LocalVariableAccess] access to local variable m2
# 96| 1: [TupleExpr] (..., ...)
# 96| 0: [IntLiteral] 1
# 96| 1: [TupleExpr] (..., ...)
# 96| 0: [StringLiteralUtf16] "TupleExprNode2"
# 96| 1: [IntLiteral] 2
# 99| 11: [Method] TupleMemberAccess
# 99| -1: [TypeMention] Void
# 100| 4: [BlockStmt] {...}
# 101| 0: [LocalVariableDeclStmt] ... ...;
# 101| 0: [LocalVariableDeclAndInitExpr] String m1 = ...
# 101| -1: [TypeMention] string
# 101| 0: [LocalVariableAccess] access to local variable m1
# 101| 1: [FieldAccess] access to field Item1
# 101| -1: [TupleExpr] (..., ...)
# 101| 0: [StringLiteralUtf16] "TupleMemberAccess1"
# 101| 1: [IntLiteral] 0
# 102| 1: [LocalVariableDeclStmt] ... ...;
# 102| 0: [LocalVariableDeclAndInitExpr] (String,Int32) m2 = ...
# 102| -1: [TypeMention] (string, int)
# 102| 0: [LocalVariableAccess] access to local variable m2
# 102| 1: [FieldAccess] access to field Item2
# 102| -1: [TupleExpr] (..., ...)
# 102| 0: [IntLiteral] 0
# 102| 1: [TupleExpr] (..., ...)
# 102| 0: [StringLiteralUtf16] "TupleMemberAccess2"
# 102| 1: [IntLiteral] 1
# 105| 12: [Method] DefUse
# 105| -1: [TypeMention] Void
# 106| 4: [BlockStmt] {...}
# 107| 0: [ExprStmt] ...;
# 107| 0: [AssignExpr] ... = ...
# 107| 0: [TupleExpr] (..., ...)
# 107| 0: [LocalVariableDeclExpr] String m1
# 107| 1: [LocalVariableDeclExpr] (Int32,Int32) m2
# 107| 1: [TupleExpr] (..., ...)
# 107| 0: [StringLiteralUtf16] "DefUse1"
# 107| 1: [TupleExpr] (..., ...)
# 107| 0: [IntLiteral] 0
# 107| 1: [IntLiteral] 1
# 108| 1: [LocalVariableDeclStmt] ... ...;
# 108| 0: [LocalVariableDeclExpr] String m3
# 108| 0: [TypeMention] string
# 109| 2: [LocalVariableDeclStmt] ... ...;
# 109| 0: [LocalVariableDeclExpr] Int32 m4
# 109| 0: [TypeMention] int
# 109| 1: [LocalVariableDeclExpr] Int32 m5
# 109| 0: [TypeMention] int
# 110| 3: [ExprStmt] ...;
# 110| 0: [AssignExpr] ... = ...
# 110| 0: [TupleExpr] (..., ...)
# 110| 0: [LocalVariableAccess] access to local variable m3
# 110| 1: [TupleExpr] (..., ...)
# 110| 0: [LocalVariableAccess] access to local variable m4
# 110| 1: [LocalVariableAccess] access to local variable m5
# 110| 1: [TupleExpr] (..., ...)
# 110| 0: [LocalVariableAccess] access to local variable m1
# 110| 1: [LocalVariableAccess] access to local variable m2
# 111| 4: [LocalVariableDeclStmt] ... ...;
# 111| 0: [LocalVariableDeclAndInitExpr] Int32 m6 = ...
# 111| -1: [TypeMention] int
# 111| 0: [LocalVariableAccess] access to local variable m6
# 111| 1: [LocalVariableAccess] access to local variable m4
# 112| 5: [ExprStmt] ...;
# 112| 0: [AssignExpr] ... = ...
# 112| 0: [TupleExpr] (..., ...)
# 112| 0: [LocalVariableDeclExpr] String m7
# 112| 1: [TupleExpr] (..., ...)
# 112| 0: [LocalVariableDeclExpr] Int32 m8
# 112| 1: [LocalVariableDeclExpr] Int32 m9
# 112| 1: [AssignExpr] ... = ...
# 112| 0: [TupleExpr] (..., ...)
# 112| 0: [LocalVariableAccess] access to local variable m1
# 112| 1: [LocalVariableAccess] access to local variable m2
# 112| 1: [TupleExpr] (..., ...)
# 112| 0: [StringLiteralUtf16] "DefUse2"
# 112| 1: [TupleExpr] (..., ...)
# 112| 0: [IntLiteral] 0
# 112| 1: [IntLiteral] 1
# 113| 6: [LocalVariableDeclStmt] ... ...;
# 113| 0: [LocalVariableDeclAndInitExpr] Int32 m10 = ...
# 113| -1: [TypeMention] int
# 113| 0: [LocalVariableAccess] access to local variable m10
# 113| 1: [LocalVariableAccess] access to local variable m9
# 116| 7: [ExprStmt] ...;
# 116| 0: [AssignExpr] ... = ...
# 116| 0: [FieldAccess] access to field Item2
# 116| -1: [LocalVariableAccess] access to local variable m2
# 116| 1: [IntLiteral] 0
# 117| 8: [LocalVariableDeclStmt] ... ...;
# 117| 0: [LocalVariableDeclAndInitExpr] Int32 m11 = ...
# 117| -1: [TypeMention] int
# 117| 0: [LocalVariableAccess] access to local variable m11
# 117| 1: [FieldAccess] access to field Item1
# 117| -1: [LocalVariableAccess] access to local variable m2
# 120| 9: [LocalVariableDeclStmt] ... ...;
# 120| 0: [LocalVariableDeclExpr] String m12
# 120| 0: [TypeMention] string
# 121| 10: [LocalVariableDeclStmt] ... ...;
# 121| 0: [LocalVariableDeclAndInitExpr] String m13 = ...
# 121| -1: [TypeMention] string
# 121| 0: [LocalVariableAccess] access to local variable m13
# 121| 1: [AssignExpr] ... = ...
# 121| 0: [LocalVariableAccess] access to local variable m12
# 121| 1: [StringLiteralUtf16] "DefUse3"
# 125| [Class] LocalFunctions
# 127| 6: [Method] Main
# 127| -1: [TypeMention] int
# 128| 4: [BlockStmt] {...}
# 129| 0: [LocalFunctionStmt] f1(...)
# 129| 0: [LocalFunction] f1
#-----| 2: (Parameters)
# 129| 0: [Parameter] x
# 129| -1: [TypeMention] int
# 129| 4: [BlockStmt] {...}
# 129| 0: [ReturnStmt] return ...;
# 129| 0: [AddExpr] ... + ...
# 129| 0: [ParameterAccess] access to parameter x
# 129| 1: [IntLiteral] 1
# 131| 1: [LocalFunctionStmt] f2(...)
# 131| 0: [LocalFunction] f2
#-----| 1: (Type parameters)
# 131| 0: [TypeParameter] T
# 131| 1: [TypeParameter] U
#-----| 2: (Parameters)
# 131| 0: [Parameter] t
# 131| -1: [TypeMention] T
# 131| 1: [Parameter] u
# 131| -1: [TypeMention] U
# 131| 4: [BlockStmt] {...}
# 131| 0: [ReturnStmt] return ...;
# 131| 0: [ParameterAccess] access to parameter t
# 133| 2: [LocalVariableDeclStmt] ... ...;
# 133| 0: [LocalVariableDeclAndInitExpr] Func<Int32> f4 = ...
# 133| -1: [TypeMention] Func<int>
# 133| 1: [TypeMention] int
# 133| 0: [LocalVariableAccess] access to local variable f4
# 133| 1: [ImplicitDelegateCreation] delegate creation of type Func<Int32>
# 133| 0: [LocalFunctionAccess] access to local function f3
# 135| 3: [LocalFunctionStmt] f3(...)
# 135| 0: [LocalFunction] f3
# 135| 4: [IntLiteral] 2
# 137| 4: [LocalVariableDeclStmt] ... ...;
# 137| 0: [LocalVariableDeclAndInitExpr] Func<Int32,Int32> f5 = ...
# 137| -1: [TypeMention] Func<int, int>
# 137| 1: [TypeMention] int
# 137| 2: [TypeMention] int
# 137| 0: [LocalVariableAccess] access to local variable f5
# 137| 1: [LambdaExpr] (...) => ...
#-----| 2: (Parameters)
# 137| 0: [Parameter] x
# 137| 4: [AddExpr] ... + ...
# 137| 0: [ParameterAccess] access to parameter x
# 137| 1: [IntLiteral] 1
# 139| 5: [LocalFunctionStmt] f6(...)
# 139| 0: [LocalFunction] f6
#-----| 2: (Parameters)
# 139| 0: [Parameter] x
# 139| -1: [TypeMention] int
# 139| 4: [ConditionalExpr] ... ? ... : ...
# 139| 0: [GTExpr] ... > ...
# 139| 0: [ParameterAccess] access to parameter x
# 139| 1: [IntLiteral] 0
# 139| 1: [AddExpr] ... + ...
# 139| 0: [IntLiteral] 1
# 139| 1: [LocalFunctionCall] call to local function f7
# 139| -1: [LocalFunctionAccess] access to local function f7
# 139| 0: [SubExpr] ... - ...
# 139| 0: [ParameterAccess] access to parameter x
# 139| 1: [IntLiteral] 1
# 139| 2: [IntLiteral] 0
# 141| 6: [LocalFunctionStmt] f7(...)
# 141| 0: [LocalFunction] f7
#-----| 2: (Parameters)
# 141| 0: [Parameter] x
# 141| -1: [TypeMention] int
# 141| 4: [LocalFunctionCall] call to local function f6
# 141| -1: [LocalFunctionAccess] access to local function f6
# 141| 0: [ParameterAccess] access to parameter x
# 143| 7: [LocalFunctionStmt] f8(...)
# 143| 0: [LocalFunction] f8
# 144| 4: [BlockStmt] {...}
# 145| 0: [LocalFunctionStmt] f9(...)
# 145| 0: [LocalFunction] f9
#-----| 2: (Parameters)
# 145| 0: [Parameter] x
# 145| -1: [TypeMention] int
# 145| 4: [LocalFunctionCall] call to local function f7
# 145| -1: [LocalFunctionAccess] access to local function f7
# 145| 0: [ParameterAccess] access to parameter x
# 146| 1: [ReturnStmt] return ...;
# 146| 0: [LocalFunctionCall] call to local function f9
# 146| -1: [LocalFunctionAccess] access to local function f9
# 146| 0: [IntLiteral] 1
# 149| 8: [LocalVariableDeclStmt] ... ...;
# 149| 0: [LocalVariableDeclAndInitExpr] Action a = ...
# 149| -1: [TypeMention] Action
# 149| 0: [LocalVariableAccess] access to local variable a
# 149| 1: [LambdaExpr] (...) => ...
# 150| 4: [BlockStmt] {...}
# 151| 0: [LocalFunctionStmt] f9(...)
# 151| 0: [LocalFunction] f9
# 151| 4: [IntLiteral] 0
# 154| 9: [ReturnStmt] return ...;
# 154| 0: [LocalFunctionCall] call to local function f1
# 154| -1: [LocalFunctionAccess] access to local function f1
# 154| 0: [IntLiteral] 2
# 157| 7: [Method] Generics
# 157| -1: [TypeMention] Void
# 158| 4: [BlockStmt] {...}
# 159| 0: [LocalFunctionStmt] f(...)
# 159| 0: [LocalFunction] f
#-----| 1: (Type parameters)
# 159| 0: [TypeParameter] T
# 159| 4: [IntLiteral] 1
# 160| 1: [LocalFunctionStmt] g(...)
# 160| 0: [LocalFunction] g
#-----| 1: (Type parameters)
# 160| 0: [TypeParameter] T
#-----| 2: (Parameters)
# 160| 0: [Parameter] t
# 160| -1: [TypeMention] T
# 160| 4: [ParameterAccess] access to parameter t
# 162| 2: [LocalFunctionStmt] h(...)
# 162| 0: [LocalFunction] h
#-----| 1: (Type parameters)
# 162| 0: [TypeParameter] T
# 162| 1: [TypeParameter] U
#-----| 2: (Parameters)
# 162| 0: [Parameter] t
# 162| -1: [TypeMention] T
# 162| 1: [Parameter] u
# 162| -1: [TypeMention] U
# 163| 4: [BlockStmt] {...}
# 164| 0: [LocalFunctionStmt] f2(...)
# 164| 0: [LocalFunction] f2
#-----| 1: (Type parameters)
# 164| 0: [TypeParameter] S
#-----| 2: (Parameters)
# 164| 0: [Parameter] s
# 164| -1: [TypeMention] S
# 164| 1: [Parameter] _t
# 164| -1: [TypeMention] T
# 164| 4: [LocalFunctionCall] call to local function f
# 164| -1: [LocalFunctionAccess] access to local function f
# 165| 1: [ExprStmt] ...;
# 165| 0: [LocalFunctionCall] call to local function f
# 165| -1: [LocalFunctionAccess] access to local function f
# 166| 2: [ReturnStmt] return ...;
# 166| 0: [LocalFunctionCall] call to local function g
# 166| -1: [LocalFunctionAccess] access to local function g
# 166| 0: [ParameterAccess] access to parameter u
# 169| 3: [ExprStmt] ...;
# 169| 0: [LocalFunctionCall] call to local function h
# 169| -1: [LocalFunctionAccess] access to local function h
# 169| 0: [IntLiteral] 0
# 169| 1: [IntLiteral] 0
# 170| 4: [ExprStmt] ...;
# 170| 0: [LocalFunctionCall] call to local function h
# 170| -1: [LocalFunctionAccess] access to local function h
# 170| 0: [StringLiteralUtf16] ""
# 170| 1: [BoolLiteral] true
# 173| 8: [Method] GlobalFlow
# 173| -1: [TypeMention] Void
# 174| 4: [BlockStmt] {...}
# 175| 0: [LocalVariableDeclStmt] ... ...;
# 175| 0: [LocalVariableDeclAndInitExpr] String src = ...
# 175| -1: [TypeMention] string
# 175| 0: [LocalVariableAccess] access to local variable src
# 175| 1: [StringLiteralUtf16] "tainted"
# 176| 1: [LocalFunctionStmt] f(...)
# 176| 0: [LocalFunction] f
#-----| 2: (Parameters)
# 176| 0: [Parameter] s
# 176| -1: [TypeMention] string
# 176| 4: [AddExpr] ... + ...
# 176| 0: [LocalFunctionCall] call to local function g
# 176| -1: [LocalFunctionAccess] access to local function g
# 176| 0: [ParameterAccess] access to parameter s
# 176| 1: [StringLiteralUtf16] ""
# 177| 2: [LocalFunctionStmt] g(...)
# 177| 0: [LocalFunction] g
#-----| 2: (Parameters)
# 177| 0: [Parameter] s
# 177| -1: [TypeMention] string
# 177| 4: [ParameterAccess] access to parameter s
# 178| 3: [LocalFunctionStmt] h(...)
# 178| 0: [LocalFunction] h
#-----| 2: (Parameters)
# 178| 0: [Parameter] s
# 178| -1: [TypeMention] string
# 178| 4: [BlockStmt] {...}
# 178| 0: [ReturnStmt] return ...;
# 178| 0: [ParameterAccess] access to parameter s
# 180| 4: [LocalVariableDeclStmt] ... ...;
# 180| 0: [LocalVariableDeclAndInitExpr] String sink1 = ...
# 180| -1: [TypeMention] string
# 180| 0: [LocalVariableAccess] access to local variable sink1
# 180| 1: [LocalFunctionCall] call to local function f
# 180| -1: [LocalFunctionAccess] access to local function f
# 180| 0: [LocalVariableAccess] access to local variable src
# 181| 5: [LocalVariableDeclStmt] ... ...;
# 181| 0: [LocalVariableDeclAndInitExpr] String sink2 = ...
# 181| -1: [TypeMention] string
# 181| 0: [LocalVariableAccess] access to local variable sink2
# 181| 1: [LocalFunctionCall] call to local function g
# 181| -1: [LocalFunctionAccess] access to local function g
# 181| 0: [LocalVariableAccess] access to local variable src
# 182| 6: [LocalVariableDeclStmt] ... ...;
# 182| 0: [LocalVariableDeclAndInitExpr] String sink3 = ...
# 182| -1: [TypeMention] string
# 182| 0: [LocalVariableAccess] access to local variable sink3
# 182| 1: [LocalFunctionCall] call to local function h
# 182| -1: [LocalFunctionAccess] access to local function h
# 182| 0: [LocalVariableAccess] access to local variable src
# 186| [Class] Refs
# 188| 6: [Method] F1
# 188| -1: [TypeMention] Void
# 189| 4: [BlockStmt] {...}
# 190| 0: [LocalVariableDeclStmt] ... ...;
# 190| 0: [LocalVariableDeclAndInitExpr] Int32 v1 = ...
# 190| -1: [TypeMention] int
# 190| 0: [LocalVariableAccess] access to local variable v1
# 190| 1: [IntLiteral] 2
# 191| 1: [LocalVariableDeclStmt] ... ...;
# 191| 0: [LocalVariableDeclAndInitExpr] Int32 r1 = ...
# 191| -1: [TypeMention] null
# 191| 0: [LocalVariableAccess] access to local variable r1
# 191| 1: [RefExpr] ref ...
# 191| 0: [LocalVariableAccess] access to local variable v1
# 192| 2: [LocalVariableDeclStmt] ... ...;
# 192| 0: [LocalVariableDeclAndInitExpr] Int32[] array = ...
# 192| -1: [TypeMention] Int32[]
# 192| 0: [LocalVariableAccess] access to local variable array
# 192| 1: [ArrayCreation] array creation of type Int32[]
# 192| -1: [TypeMention] Int32[]
# 192| 1: [TypeMention] int
# 192| 0: [IntLiteral] 10
# 193| 3: [ExprStmt] ...;
# 193| 0: [AssignExpr] ... = ...
# 193| 0: [LocalVariableAccess] access to local variable r1
# 193| 1: [IntLiteral] 3
# 194| 4: [ExprStmt] ...;
# 194| 0: [AssignExpr] ... = ...
# 194| 0: [LocalVariableAccess] access to local variable r1
# 194| 1: [ArrayAccess] access to array element
# 194| -1: [LocalVariableAccess] access to local variable array
# 194| 0: [IntLiteral] 1
# 195| 5: [LocalVariableDeclStmt] ... ...;
# 195| 0: [LocalVariableDeclAndInitExpr] Int32 r2 = ...
# 195| -1: [TypeMention] null
# 195| 0: [LocalVariableAccess] access to local variable r2
# 195| 1: [RefExpr] ref ...
# 195| 0: [ArrayAccess] access to array element
# 195| -1: [LocalVariableAccess] access to local variable array
# 195| 0: [IntLiteral] 3
# 196| 6: [LocalVariableDeclStmt] ... ...;
# 196| 0: [LocalVariableDeclAndInitExpr] Int32 r3 = ...
# 196| -1: [TypeMention] null
# 196| 0: [LocalVariableAccess] access to local variable r3
# 196| 1: [RefExpr] ref ...
# 196| 0: [LocalVariableAccess] access to local variable r1
# 197| 7: [ExprStmt] ...;
# 197| 0: [AssignExpr] ... = ...
# 197| 0: [LocalVariableAccess] access to local variable v1
# 197| 1: [MethodCall] call to method F2
# 197| 0: [LocalVariableAccess] access to local variable v1
# 198| 8: [LocalVariableDeclStmt] ... ...;
# 198| 0: [LocalVariableDeclAndInitExpr] Int32 r4 = ...
# 198| -1: [TypeMention] null
# 198| 0: [LocalVariableAccess] access to local variable r4
# 198| 1: [RefExpr] ref ...
# 198| 0: [MethodCall] call to method F2
# 198| 0: [LocalVariableAccess] access to local variable r1
# 199| 9: [ExprStmt] ...;
# 199| 0: [AssignExpr] ... = ...
# 199| 0: [MethodCall] call to method F2
# 199| 0: [LocalVariableAccess] access to local variable r1
# 199| 1: [IntLiteral] 3
# 202| 7: [Method] F2
# 202| -1: [TypeMention] int
#-----| 2: (Parameters)
# 202| 0: [Parameter] p
# 202| -1: [TypeMention] int
# 203| 4: [BlockStmt] {...}
# 204| 0: [LocalFunctionStmt] F3(...)
# 204| 0: [LocalFunction] F3
#-----| 2: (Parameters)
# 204| 0: [Parameter] q
# 204| -1: [TypeMention] int
# 204| 4: [BlockStmt] {...}
# 204| 0: [ReturnStmt] return ...;
# 204| 0: [RefExpr] ref ...
# 204| 0: [ParameterAccess] access to parameter q
# 205| 1: [ReturnStmt] return ...;
# 205| 0: [RefExpr] ref ...
# 205| 0: [ParameterAccess] access to parameter p
# 208| 8: [DelegateType] RefFn
#-----| 2: (Parameters)
# 208| 0: [Parameter] p
# 208| -1: [TypeMention] int
# 211| [Class] Discards
# 213| 6: [Method] f
# 213| -1: [TypeMention] (int, double)
# 213| 1: [TypeMention] int
# 213| 2: [TypeMention] double
#-----| 2: (Parameters)
# 213| 0: [Parameter] x
# 213| -1: [TypeMention] bool
# 214| 4: [BlockStmt] {...}
# 215| 0: [ExprStmt] ...;
# 215| 0: [AssignExpr] ... = ...
# 215| 0: [ParameterAccess] access to parameter x
# 215| 1: [BoolLiteral] false
# 216| 1: [ReturnStmt] return ...;
# 216| 0: [TupleExpr] (..., ...)
# 216| 0: [IntLiteral] 0
# 216| 1: [DoubleLiteral] 0
# 219| 7: [Method] Test
# 219| -1: [TypeMention] Void
# 220| 4: [BlockStmt] {...}
# 221| 0: [ExprStmt] ...;
# 221| 0: [AssignExpr] ... = ...
# 221| 0: [DiscardExpr] _
# 221| 1: [MethodCall] call to method f
# 221| 0: [DiscardExpr] _
# 222| 1: [ExprStmt] ...;
# 222| 0: [AssignExpr] ... = ...
# 222| 0: [TupleExpr] (..., ...)
# 222| 0: [DiscardExpr] _
# 222| 1: [DiscardExpr] _
# 222| 1: [MethodCall] call to method f
# 222| 0: [DiscardExpr] _
# 223| 2: [ExprStmt] ...;
# 223| 0: [AssignExpr] ... = ...
# 223| 0: [TupleExpr] (..., ...)
# 223| 0: [LocalVariableDeclExpr] Int32 x
# 223| 1: [DiscardExpr] _
# 223| 1: [MethodCall] call to method f
# 223| 0: [DiscardExpr] _
# 224| 3: [ExprStmt] ...;
# 224| 0: [AssignExpr] ... = ...
# 224| 0: [TupleExpr] (..., ...)
# 224| 0: [DiscardExpr] _
# 224| 1: [LocalVariableDeclExpr] Double y
# 224| 1: [MethodCall] call to method f
# 224| 0: [LocalVariableAccess,LocalVariableDeclExpr] Boolean z
# 228| [Class] Patterns
# 230| 6: [Method] Test
# 230| -1: [TypeMention] Void
# 231| 4: [BlockStmt] {...}
# 232| 0: [LocalVariableDeclStmt] ... ...;
# 232| 0: [LocalVariableDeclAndInitExpr] Object o = ...
# 232| -1: [TypeMention] object
# 232| 0: [LocalVariableAccess] access to local variable o
# 232| 1: [NullLiteral] null
# 233| 1: [IfStmt] if (...) ...
# 233| 0: [LogicalAndExpr] ... && ...
# 233| 0: [IsExpr] ... is ...
# 233| 0: [LocalVariableAccess] access to local variable o
# 233| 1: [VariablePatternExpr] Int32 i1
# 233| 0: [TypeMention] int
# 233| 1: [GTExpr] ... > ...
# 233| 0: [LocalVariableAccess] access to local variable i1
# 233| 1: [IntLiteral] 0
# 234| 1: [BlockStmt] {...}
# 235| 0: [ExprStmt] ...;
# 235| 0: [MethodCall] call to method WriteLine
# 235| -1: [TypeAccess] access to type Console
# 235| 0: [TypeMention] Console
# 235| 0: [InterpolatedStringExpr] $"..."
# 235| 0: [StringLiteralUtf16] "int "
# 235| 1: [InterpolatedStringInsertExpr] {...}
# 235| 0: [LocalVariableAccess] access to local variable i1
# 237| 2: [IfStmt] if (...) ...
# 237| 0: [IsExpr] ... is ...
# 237| 0: [LocalVariableAccess] access to local variable o
# 237| 1: [VariablePatternExpr] String s1
# 237| 0: [TypeMention] string
# 238| 1: [BlockStmt] {...}
# 239| 0: [ExprStmt] ...;
# 239| 0: [MethodCall] call to method WriteLine
# 239| -1: [TypeAccess] access to type Console
# 239| 0: [TypeMention] Console
# 239| 0: [InterpolatedStringExpr] $"..."
# 239| 0: [StringLiteralUtf16] "string "
# 239| 1: [InterpolatedStringInsertExpr] {...}
# 239| 0: [LocalVariableAccess] access to local variable s1
# 241| 2: [IfStmt] if (...) ...
# 241| 0: [IsExpr] ... is ...
# 241| 0: [LocalVariableAccess] access to local variable o
# 241| 1: [TypeAccessPatternExpr] access to type Double
# 241| 0: [TypeMention] double
# 242| 1: [BlockStmt] {...}
# 244| 2: [IfStmt] if (...) ...
# 244| 0: [IsExpr] ... is ...
# 244| 0: [LocalVariableAccess] access to local variable o
# 244| 1: [VariablePatternExpr] Object v1
# 245| 1: [BlockStmt] {...}
# 248| 2: [SwitchStmt] switch (...) {...}
# 248| 0: [LocalVariableAccess] access to local variable o
# 250| 0: [ConstCase] case ...:
# 250| 0: [ConstantPatternExpr,StringLiteralUtf16] "xyz"
# 251| 1: [BreakStmt] break;
# 252| 2: [ConstCase] case ...:
# 252| 0: [ConstantPatternExpr,StringLiteralUtf16] ""
# 252| 1: [LTExpr] ... < ...
# 252| 0: [IntLiteral] 1
# 252| 1: [IntLiteral] 2
# 253| 3: [BreakStmt] break;
# 254| 4: [ConstCase] case ...:
# 254| 0: [ConstantPatternExpr,StringLiteralUtf16] "x"
# 254| 1: [IsExpr] ... is ...
# 254| 0: [LocalVariableAccess] access to local variable o
# 254| 1: [VariablePatternExpr] String s4
# 254| 0: [TypeMention] string
# 255| 5: [ExprStmt] ...;
# 255| 0: [MethodCall] call to method WriteLine
# 255| -1: [TypeAccess] access to type Console
# 255| 0: [TypeMention] Console
# 255| 0: [InterpolatedStringExpr] $"..."
# 255| 0: [StringLiteralUtf16] "x "
# 255| 1: [InterpolatedStringInsertExpr] {...}
# 255| 0: [LocalVariableAccess] access to local variable s4
# 256| 6: [BreakStmt] break;
# 257| 7: [CaseStmt] case ...:
# 257| 0: [VariablePatternExpr] Int32 i2
# 257| 0: [TypeMention] int
# 257| 1: [GTExpr] ... > ...
# 257| 0: [LocalVariableAccess] access to local variable i2
# 257| 1: [IntLiteral] 0
# 258| 8: [ExprStmt] ...;
# 258| 0: [MethodCall] call to method WriteLine
# 258| -1: [TypeAccess] access to type Console
# 258| 0: [TypeMention] Console
# 258| 0: [InterpolatedStringExpr] $"..."
# 258| 0: [StringLiteralUtf16] "positive "
# 258| 1: [InterpolatedStringInsertExpr] {...}
# 258| 0: [LocalVariableAccess] access to local variable i2
# 259| 9: [BreakStmt] break;
# 260| 10: [CaseStmt] case ...:
# 260| 0: [VariablePatternExpr] Int32 i3
# 260| 0: [TypeMention] int
# 261| 11: [ExprStmt] ...;
# 261| 0: [MethodCall] call to method WriteLine
# 261| -1: [TypeAccess] access to type Console
# 261| 0: [TypeMention] Console
# 261| 0: [InterpolatedStringExpr] $"..."
# 261| 0: [StringLiteralUtf16] "int "
# 261| 1: [InterpolatedStringInsertExpr] {...}
# 261| 0: [LocalVariableAccess] access to local variable i3
# 262| 12: [BreakStmt] break;
# 263| 13: [CaseStmt] case ...:
# 263| 0: [VariablePatternExpr] String s2
# 263| 0: [TypeMention] string
# 264| 14: [ExprStmt] ...;
# 264| 0: [MethodCall] call to method WriteLine
# 264| -1: [TypeAccess] access to type Console
# 264| 0: [TypeMention] Console
# 264| 0: [InterpolatedStringExpr] $"..."
# 264| 0: [StringLiteralUtf16] "string "
# 264| 1: [InterpolatedStringInsertExpr] {...}
# 264| 0: [LocalVariableAccess] access to local variable s2
# 265| 15: [BreakStmt] break;
# 266| 16: [CaseStmt] case ...:
# 266| 0: [TypeAccessPatternExpr] access to type Double
# 266| 0: [TypeMention] double
# 267| 17: [ExprStmt] ...;
# 267| 0: [MethodCall] call to method WriteLine
# 267| -1: [TypeAccess] access to type Console
# 267| 0: [TypeMention] Console
# 267| 0: [StringLiteralUtf16] "Double"
# 268| 18: [BreakStmt] break;
# 269| 19: [CaseStmt] case ...:
# 269| 0: [VariablePatternExpr] Object v2
# 270| 20: [BreakStmt] break;
# 271| 21: [DefaultCase] default:
# 272| 22: [ExprStmt] ...;
# 272| 0: [MethodCall] call to method WriteLine
# 272| -1: [TypeAccess] access to type Console
# 272| 0: [TypeMention] Console
# 272| 0: [StringLiteralUtf16] "Something else"
# 273| 23: [BreakStmt] break;
# 278| [Class] ForeachStatements
# 280| 6: [Method] Test
# 280| -1: [TypeMention] Void
# 281| 4: [BlockStmt] {...}
# 282| 0: [LocalVariableDeclStmt] ... ...;
# 282| 0: [LocalVariableDeclAndInitExpr] Dictionary<Int32,String> dict = ...
# 282| -1: [TypeMention] Dictionary<int, string>
# 282| 0: [LocalVariableAccess] access to local variable dict
# 282| 1: [ObjectCreation] object creation of type Dictionary<Int32,String>
# 282| 0: [TypeMention] Dictionary<int, string>
# 282| 1: [TypeMention] int
# 282| 2: [TypeMention] string
# 283| 1: [LocalVariableDeclStmt] ... ...;
# 283| 0: [LocalVariableDeclAndInitExpr] IEnumerable<(Int32,String)> list = ...
# 283| -1: [TypeMention] IEnumerable<(int, string)>
# 283| 0: [LocalVariableAccess] access to local variable list
# 283| 1: [MethodCall] call to method Select<KeyValuePair<Int32,String>,(Int32,String)>
# 283| -1: [LocalVariableAccess] access to local variable dict
# 283| 0: [LambdaExpr] (...) => ...
#-----| 2: (Parameters)
# 283| 0: [Parameter] item
# 283| 4: [TupleExpr] (..., ...)
# 283| 0: [PropertyCall] access to property Key
# 283| -1: [ParameterAccess] access to parameter item
# 283| 1: [PropertyCall] access to property Value
# 283| -1: [ParameterAccess] access to parameter item
# 285| 2: [ForeachStmt] foreach (... ... in ...) ...
# 285| 0: [TupleExpr] (..., ...)
# 285| 0: [LocalVariableDeclExpr] Int32 a
# 285| 1: [LocalVariableDeclExpr] String b
# 285| 1: [LocalVariableAccess] access to local variable list
# 285| 2: [BlockStmt] {...}
# 287| 3: [ForeachStmt] foreach (... ... in ...) ...
# 287| 0: [TupleExpr] (..., ...)
# 287| 0: [LocalVariableDeclExpr] Int32 a
# 287| 1: [LocalVariableDeclExpr] String b
# 287| 1: [LocalVariableAccess] access to local variable list
# 287| 2: [BlockStmt] {...}
# 289| 4: [ForeachStmt] foreach (... ... in ...) ...
# 289| 0: [TupleExpr] (..., ...)
# 289| 0: [LocalVariableDeclExpr] Int32 a
# 289| 1: [LocalVariableDeclExpr] String b
# 289| 1: [LocalVariableAccess] access to local variable list
# 289| 2: [BlockStmt] {...}
# 293| [Class] ForLoops
# 295| 6: [Method] Test
# 295| -1: [TypeMention] Void
# 296| 4: [BlockStmt] {...}
# 297| 0: [ForStmt] for (...;...;...) ...
# 297| -1: [LocalVariableDeclAndInitExpr] Int32 x = ...
# 297| -1: [TypeMention] int
# 297| 0: [LocalVariableAccess] access to local variable x
# 297| 1: [IntLiteral] 0
# 297| 0: [LogicalAndExpr] ... && ...
# 297| 0: [LTExpr] ... < ...
# 297| 0: [LocalVariableAccess] access to local variable x
# 297| 1: [IntLiteral] 10
# 297| 1: [IsExpr] ... is ...
# 297| 0: [LocalVariableAccess] access to local variable x
# 297| 1: [VariablePatternExpr] Int32 y
# 297| 0: [TypeMention] int
# 297| 1: [PreIncrExpr] ++...
# 297| 0: [LocalVariableAccess] access to local variable x
# 298| 2: [BlockStmt] {...}
# 299| 0: [ExprStmt] ...;
# 299| 0: [MethodCall] call to method WriteLine
# 299| -1: [TypeAccess] access to type Console
# 299| 0: [TypeMention] Console
# 299| 0: [LocalVariableAccess] access to local variable y