Files
codeql/csharp/ql/test/library-tests/csharp7/PrintAst.expected
2021-03-09 09:06:35 +01:00

912 lines
43 KiB
Plaintext

CSharp7.cs:
# 7| [Class] Literals
# 9| 5: [Field] x
# 9| -1: [TypeMention] int
# 9| 1: [AssignExpr] ... = ...
# 9| 0: [FieldAccess] access to field x
# 9| 1: [IntLiteral] 11
# 10| 6: [Field] y
# 10| -1: [TypeMention] int
# 10| 1: [AssignExpr] ... = ...
# 10| 0: [FieldAccess] access to field y
# 10| 1: [IntLiteral] 123456
# 11| 7: [Field] z
# 11| -1: [TypeMention] int
# 11| 1: [AssignExpr] ... = ...
# 11| 0: [FieldAccess] access to field z
# 11| 1: [IntLiteral] 128
# 14| [Class] ExpressionBodiedMembers
# 16| 4: [Field] field
# 16| -1: [TypeMention] int
# 16| 1: [AssignExpr] ... = ...
# 16| 0: [FieldAccess] access to field field
# 16| 1: [IntLiteral] 0
# 17| 5: [Method] Foo
# 17| -1: [TypeMention] int
# 17| 4: [FieldAccess] access to field field
# 18| 6: [Property] P
# 18| -1: [TypeMention] int
# 18| 3: [Getter] get_P
# 18| 4: [IntLiteral] 5
# 19| 7: [Property] Q
# 19| -1: [TypeMention] int
# 21| 3: [Getter] get_Q
# 21| 4: [MethodCall] call to method Foo
# 22| 4: [Setter] set_Q
#-----| 2: (Parameters)
# 22| 0: [Parameter] value
# 22| 4: [AssignExpr] ... = ...
# 22| 0: [FieldAccess] access to field field
# 22| 1: [ParameterAccess] access to parameter value
# 24| 8: [InstanceConstructor] ExpressionBodiedMembers
# 24| 3: [ConstructorInitializer] call to constructor ExpressionBodiedMembers
# 24| 0: [IntLiteral] 1
# 24| 4: [BlockStmt] {...}
# 25| 9: [InstanceConstructor] ExpressionBodiedMembers
#-----| 2: (Parameters)
# 25| 0: [Parameter] x
# 25| -1: [TypeMention] int
# 25| 4: [MethodCall] call to method Foo
# 26| 10: [Destructor] ~ExpressionBodiedMembers
# 26| 4: [MethodCall] call to method Foo
# 29| [Class] ThrowExpr
# 31| 5: [Method] Throw
# 31| -1: [TypeMention] int
#-----| 2: (Parameters)
# 31| 0: [Parameter] i
# 31| -1: [TypeMention] int
# 32| 4: [BlockStmt] {...}
# 33| 0: [ReturnStmt] return ...;
# 33| 0: [ConditionalExpr] ... ? ... : ...
# 33| 0: [GTExpr] ... > ...
# 33| 0: [ParameterAccess] access to parameter i
# 33| 1: [IntLiteral] 0
# 33| 1: [ParameterAccess] access to parameter i
# 33| 2: [ThrowExpr] throw ...
# 33| 0: [ObjectCreation] object creation of type ArgumentException
# 33| -1: [TypeMention] ArgumentException
# 33| 0: [StringLiteral] "i"
# 37| [Class] OutVariables
# 39| 5: [Method] F
# 39| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 39| 0: [Parameter] x
# 39| -1: [TypeMention] string
# 40| 4: [BlockStmt] {...}
# 41| 0: [ExprStmt] ...;
# 41| 0: [AssignExpr] ... = ...
# 41| 0: [ParameterAccess] access to parameter x
# 41| 1: [StringLiteral] "tainted"
# 44| 6: [Method] G
# 44| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 44| 0: [Parameter] x
# 44| -1: [TypeMention] string
# 44| 1: [Parameter] y
# 44| -1: [TypeMention] string
# 45| 4: [BlockStmt] {...}
# 46| 0: [ExprStmt] ...;
# 46| 0: [AssignExpr] ... = ...
# 46| 0: [ParameterAccess] access to parameter y
# 46| 1: [ParameterAccess] access to parameter x
# 49| 7: [Method] G
# 49| -1: [TypeMention] Void
# 50| 4: [BlockStmt] {...}
# 51| 0: [ExprStmt] ...;
# 51| 0: [MethodCall] call to method F
# 51| 0: [LocalVariableAccess,LocalVariableDeclExpr] String t1
# 52| 1: [ExprStmt] ...;
# 52| 0: [MethodCall] call to method F
# 52| 0: [LocalVariableAccess,LocalVariableDeclExpr] String t2
# 53| 2: [LocalVariableDeclStmt] ... ...;
# 53| 0: [LocalVariableDeclAndInitExpr] String t3 = ...
# 53| -1: [TypeMention] string
# 53| 0: [LocalVariableAccess] access to local variable t3
# 53| 1: [LocalVariableAccess] access to local variable t1
# 54| 3: [ExprStmt] ...;
# 54| 0: [MethodCall] call to method F
# 54| 0: [LocalVariableAccess] access to local variable t1
# 55| 4: [ExprStmt] ...;
# 55| 0: [AssignExpr] ... = ...
# 55| 0: [LocalVariableAccess] access to local variable t3
# 55| 1: [LocalVariableAccess] access to local variable t1
# 56| 5: [ExprStmt] ...;
# 56| 0: [AssignExpr] ... = ...
# 56| 0: [LocalVariableAccess] access to local variable t3
# 56| 1: [LocalVariableAccess] access to local variable t2
# 57| 6: [ExprStmt] ...;
# 57| 0: [MethodCall] call to method G
# 57| 0: [StringLiteral] "tainted"
# 57| 1: [LocalVariableAccess,LocalVariableDeclExpr] String t4
# 58| 7: [LocalVariableDeclStmt] ... ...;
# 58| 0: [LocalVariableDeclAndInitExpr] String t5 = ...
# 58| -1: [TypeMention] string
# 58| 0: [LocalVariableAccess] access to local variable t5
# 58| 1: [LocalVariableAccess] access to local variable t4
# 62| [Class] Tuples
# 64| 5: [Method] F
# 64| -1: [TypeMention] (int, int)
# 64| 1: [TypeMention] int
# 64| 2: [TypeMention] int
# 65| 4: [BlockStmt] {...}
# 66| 0: [ReturnStmt] return ...;
# 66| 0: [TupleExpr] (..., ...)
# 66| 0: [IntLiteral] 1
# 66| 1: [IntLiteral] 2
# 69| 6: [Method] Expressions
# 69| -1: [TypeMention] Void
# 70| 4: [BlockStmt] {...}
# 71| 0: [ExprStmt] ...;
# 71| 0: [AssignExpr] ... = ...
# 71| 0: [TupleExpr] (..., ...)
# 71| 0: [LocalVariableDeclExpr] Int32 x
# 71| 1: [LocalVariableDeclExpr] Int32 y
# 71| 1: [MethodCall] call to method F
# 72| 1: [LocalVariableDeclStmt] ... ...;
# 72| 0: [LocalVariableDeclAndInitExpr] (Int32,Int32) z = ...
# 72| -1: [TypeMention] (int, int)
# 72| 0: [LocalVariableAccess] access to local variable z
# 72| 1: [MethodCall] call to method F
# 73| 2: [ExprStmt] ...;
# 73| 0: [AssignExpr] ... = ...
# 73| 0: [TupleExpr] (..., ...)
# 73| 0: [LocalVariableAccess] access to local variable x
# 73| 1: [LocalVariableAccess] access to local variable y
# 73| 1: [MethodCall] call to method F
# 74| 3: [ExprStmt] ...;
# 74| 0: [AssignExpr] ... = ...
# 74| 0: [LocalVariableAccess] access to local variable x
# 74| 1: [FieldAccess] access to field Item1
# 74| -1: [MethodCall] call to method F
# 75| 4: [ExprStmt] ...;
# 75| 0: [AssignExpr] ... = ...
# 75| 0: [TupleExpr] (..., ...)
# 75| 0: [LocalVariableAccess] access to local variable x
# 75| 1: [LocalVariableAccess] access to local variable y
# 75| 2: [FieldAccess] access to field Item1
# 75| -1: [LocalVariableAccess] access to local variable z
# 75| 1: [TupleExpr] (..., ...)
# 75| 0: [IntLiteral] 1
# 75| 1: [IntLiteral] 2
# 75| 2: [IntLiteral] 3
# 76| 5: [ExprStmt] ...;
# 76| 0: [AssignExpr] ... = ...
# 76| 0: [TupleExpr] (..., ...)
# 76| 0: [LocalVariableAccess] access to local variable x
# 76| 1: [LocalVariableAccess] access to local variable y
# 76| 1: [AssignExpr] ... = ...
# 76| 0: [TupleExpr] (..., ...)
# 76| 0: [LocalVariableAccess] access to local variable x
# 76| 1: [LocalVariableAccess] access to local variable y
# 76| 1: [TupleExpr] (..., ...)
# 76| 0: [IntLiteral] 1
# 76| 1: [IntLiteral] 2
# 77| 6: [ExprStmt] ...;
# 77| 0: [AssignExpr] ... = ...
# 77| 0: [TupleExpr] (..., ...)
# 77| 0: [LocalVariableDeclExpr] Int32 a
# 77| 1: [TupleExpr] (..., ...)
# 77| 0: [LocalVariableDeclExpr] Int32 b
# 77| 1: [LocalVariableDeclExpr] Int32 c
# 77| 1: [TupleExpr] (..., ...)
# 77| 0: [IntLiteral] 1
# 77| 1: [LocalVariableAccess] access to local variable z
# 78| 7: [ExprStmt] ...;
# 78| 0: [AssignExpr] ... = ...
# 78| 0: [TupleExpr] (..., ...)
# 78| 0: [LocalVariableAccess] access to local variable a
# 78| 1: [TupleExpr] (..., ...)
# 78| 0: [LocalVariableAccess] access to local variable b
# 78| 1: [LocalVariableAccess] access to local variable c
# 78| 1: [TupleExpr] (..., ...)
# 78| 0: [LocalVariableAccess] access to local variable b
# 78| 1: [TupleExpr] (..., ...)
# 78| 0: [LocalVariableAccess] access to local variable c
# 78| 1: [LocalVariableAccess] access to local variable a
# 79| 8: [ExprStmt] ...;
# 79| 0: [AssignExpr] ... = ...
# 79| 0: [TupleExpr] (..., ...)
# 79| 0: [LocalVariableDeclExpr] String i
# 79| 1: [LocalVariableDeclExpr] Int32 j
# 79| 1: [TupleExpr] (..., ...)
# 79| 0: [StringLiteral] ""
# 79| 1: [LocalVariableAccess] access to local variable x
# 82| 7: [Method] I
# 82| -1: [TypeMention] string
#-----| 2: (Parameters)
# 82| 0: [Parameter] x
# 82| -1: [TypeMention] string
# 83| 4: [BlockStmt] {...}
# 84| 0: [ReturnStmt] return ...;
# 84| 0: [FieldAccess] access to field Item1
# 84| -1: [TupleExpr] (..., ...)
# 84| 0: [ParameterAccess] access to parameter x
# 84| 1: [IntLiteral] 2
# 87| 8: [Method] TaintFlow
# 87| -1: [TypeMention] Void
# 88| 4: [BlockStmt] {...}
# 89| 0: [LocalVariableDeclStmt] ... ...;
# 89| 0: [LocalVariableDeclAndInitExpr] (String,String) t1 = ...
# 89| -1: [TypeMention] (string, string)
# 89| 0: [LocalVariableAccess] access to local variable t1
# 89| 1: [TupleExpr] (..., ...)
# 89| 0: [StringLiteral] "tainted"
# 89| 1: [StringLiteral] "X2"
# 90| 1: [ExprStmt] ...;
# 90| 0: [AssignExpr] ... = ...
# 90| 0: [TupleExpr] (..., ...)
# 90| 0: [LocalVariableDeclExpr] String t2
# 90| 1: [LocalVariableDeclExpr] String t3
# 90| 1: [LocalVariableAccess] access to local variable t1
# 91| 2: [LocalVariableDeclStmt] ... ...;
# 91| 0: [LocalVariableDeclAndInitExpr] String t4 = ...
# 91| -1: [TypeMention] string
# 91| 0: [LocalVariableAccess] access to local variable t4
# 91| 1: [LocalVariableAccess] access to local variable t3
# 92| 3: [LocalVariableDeclStmt] ... ...;
# 92| 0: [LocalVariableDeclAndInitExpr] String t5 = ...
# 92| -1: [TypeMention] string
# 92| 0: [LocalVariableAccess] access to local variable t5
# 92| 1: [MethodCall] call to method I
# 92| 0: [FieldAccess] access to field Item1
# 92| -1: [LocalVariableAccess] access to local variable t1
# 95| 9: [Method] TupleExprNode
# 95| -1: [TypeMention] Void
# 96| 4: [BlockStmt] {...}
# 97| 0: [LocalVariableDeclStmt] ... ...;
# 97| 0: [LocalVariableDeclAndInitExpr] (Int32,String) m1 = ...
# 97| -1: [TypeMention] (int, string)
# 97| 0: [LocalVariableAccess] access to local variable m1
# 97| 1: [TupleExpr] (..., ...)
# 97| 0: [IntLiteral] 1
# 97| 1: [StringLiteral] "TupleExprNode1"
# 98| 1: [LocalVariableDeclStmt] ... ...;
# 98| 0: [LocalVariableDeclAndInitExpr] (Int32,(String,Int32)) m2 = ...
# 98| -1: [TypeMention] (int, (string, int))
# 98| 0: [LocalVariableAccess] access to local variable m2
# 98| 1: [TupleExpr] (..., ...)
# 98| 0: [IntLiteral] 1
# 98| 1: [TupleExpr] (..., ...)
# 98| 0: [StringLiteral] "TupleExprNode2"
# 98| 1: [IntLiteral] 2
# 101| 10: [Method] TupleMemberAccess
# 101| -1: [TypeMention] Void
# 102| 4: [BlockStmt] {...}
# 103| 0: [LocalVariableDeclStmt] ... ...;
# 103| 0: [LocalVariableDeclAndInitExpr] String m1 = ...
# 103| -1: [TypeMention] string
# 103| 0: [LocalVariableAccess] access to local variable m1
# 103| 1: [FieldAccess] access to field Item1
# 103| -1: [TupleExpr] (..., ...)
# 103| 0: [StringLiteral] "TupleMemberAccess1"
# 103| 1: [IntLiteral] 0
# 104| 1: [LocalVariableDeclStmt] ... ...;
# 104| 0: [LocalVariableDeclAndInitExpr] (String,Int32) m2 = ...
# 104| -1: [TypeMention] (string, int)
# 104| 0: [LocalVariableAccess] access to local variable m2
# 104| 1: [FieldAccess] access to field Item2
# 104| -1: [TupleExpr] (..., ...)
# 104| 0: [IntLiteral] 0
# 104| 1: [TupleExpr] (..., ...)
# 104| 0: [StringLiteral] "TupleMemberAccess2"
# 104| 1: [IntLiteral] 1
# 107| 11: [Method] DefUse
# 107| -1: [TypeMention] Void
# 108| 4: [BlockStmt] {...}
# 109| 0: [ExprStmt] ...;
# 109| 0: [AssignExpr] ... = ...
# 109| 0: [TupleExpr] (..., ...)
# 109| 0: [LocalVariableDeclExpr] String m1
# 109| 1: [LocalVariableDeclExpr] (Int32,Int32) m2
# 109| 1: [TupleExpr] (..., ...)
# 109| 0: [StringLiteral] "DefUse1"
# 109| 1: [TupleExpr] (..., ...)
# 109| 0: [IntLiteral] 0
# 109| 1: [IntLiteral] 1
# 110| 1: [LocalVariableDeclStmt] ... ...;
# 110| 0: [LocalVariableDeclExpr] String m3
# 110| 0: [TypeMention] string
# 111| 2: [LocalVariableDeclStmt] ... ...;
# 111| 0: [LocalVariableDeclExpr] Int32 m4
# 111| 0: [TypeMention] int
# 111| 1: [LocalVariableDeclExpr] Int32 m5
# 111| 0: [TypeMention] int
# 112| 3: [ExprStmt] ...;
# 112| 0: [AssignExpr] ... = ...
# 112| 0: [TupleExpr] (..., ...)
# 112| 0: [LocalVariableAccess] access to local variable m3
# 112| 1: [TupleExpr] (..., ...)
# 112| 0: [LocalVariableAccess] access to local variable m4
# 112| 1: [LocalVariableAccess] access to local variable m5
# 112| 1: [TupleExpr] (..., ...)
# 112| 0: [LocalVariableAccess] access to local variable m1
# 112| 1: [LocalVariableAccess] access to local variable m2
# 113| 4: [LocalVariableDeclStmt] ... ...;
# 113| 0: [LocalVariableDeclAndInitExpr] Int32 m6 = ...
# 113| -1: [TypeMention] int
# 113| 0: [LocalVariableAccess] access to local variable m6
# 113| 1: [LocalVariableAccess] access to local variable m4
# 114| 5: [ExprStmt] ...;
# 114| 0: [AssignExpr] ... = ...
# 114| 0: [TupleExpr] (..., ...)
# 114| 0: [LocalVariableDeclExpr] String m7
# 114| 1: [TupleExpr] (..., ...)
# 114| 0: [LocalVariableDeclExpr] Int32 m8
# 114| 1: [LocalVariableDeclExpr] Int32 m9
# 114| 1: [AssignExpr] ... = ...
# 114| 0: [TupleExpr] (..., ...)
# 114| 0: [LocalVariableAccess] access to local variable m1
# 114| 1: [LocalVariableAccess] access to local variable m2
# 114| 1: [TupleExpr] (..., ...)
# 114| 0: [StringLiteral] "DefUse2"
# 114| 1: [TupleExpr] (..., ...)
# 114| 0: [IntLiteral] 0
# 114| 1: [IntLiteral] 1
# 115| 6: [LocalVariableDeclStmt] ... ...;
# 115| 0: [LocalVariableDeclAndInitExpr] Int32 m10 = ...
# 115| -1: [TypeMention] int
# 115| 0: [LocalVariableAccess] access to local variable m10
# 115| 1: [LocalVariableAccess] access to local variable m9
# 118| 7: [ExprStmt] ...;
# 118| 0: [AssignExpr] ... = ...
# 118| 0: [FieldAccess] access to field Item2
# 118| -1: [LocalVariableAccess] access to local variable m2
# 118| 1: [IntLiteral] 0
# 119| 8: [LocalVariableDeclStmt] ... ...;
# 119| 0: [LocalVariableDeclAndInitExpr] Int32 m11 = ...
# 119| -1: [TypeMention] int
# 119| 0: [LocalVariableAccess] access to local variable m11
# 119| 1: [FieldAccess] access to field Item1
# 119| -1: [LocalVariableAccess] access to local variable m2
# 122| 9: [LocalVariableDeclStmt] ... ...;
# 122| 0: [LocalVariableDeclExpr] String m12
# 122| 0: [TypeMention] string
# 123| 10: [LocalVariableDeclStmt] ... ...;
# 123| 0: [LocalVariableDeclAndInitExpr] String m13 = ...
# 123| -1: [TypeMention] string
# 123| 0: [LocalVariableAccess] access to local variable m13
# 123| 1: [AssignExpr] ... = ...
# 123| 0: [LocalVariableAccess] access to local variable m12
# 123| 1: [StringLiteral] "DefUse3"
# 127| [Class] LocalFunctions
# 129| 5: [Method] Main
# 129| -1: [TypeMention] int
# 130| 4: [BlockStmt] {...}
# 131| 0: [LocalFunctionStmt] f1(...)
# 131| 0: [LocalFunction] f1
#-----| 2: (Parameters)
# 131| 0: [Parameter] x
# 131| -1: [TypeMention] int
# 131| 4: [BlockStmt] {...}
# 131| 0: [ReturnStmt] return ...;
# 131| 0: [AddExpr] ... + ...
# 131| 0: [ParameterAccess] access to parameter x
# 131| 1: [IntLiteral] 1
# 133| 1: [LocalFunctionStmt] f2(...)
# 133| 0: [LocalFunction] f2
#-----| 1: (Type parameters)
# 133| 0: [TypeParameter] T
# 133| 1: [TypeParameter] U
#-----| 2: (Parameters)
# 133| 0: [Parameter] t
# 133| -1: [TypeMention] T
# 133| 1: [Parameter] u
# 133| -1: [TypeMention] U
# 133| 4: [BlockStmt] {...}
# 133| 0: [ReturnStmt] return ...;
# 133| 0: [ParameterAccess] access to parameter t
# 135| 2: [LocalVariableDeclStmt] ... ...;
# 135| 0: [LocalVariableDeclAndInitExpr] Func<Int32> f4 = ...
# 135| -1: [TypeMention] Func<Int32>
# 135| 1: [TypeMention] int
# 135| 0: [LocalVariableAccess] access to local variable f4
# 135| 1: [ImplicitDelegateCreation] delegate creation of type Func<Int32>
# 135| 0: [LocalFunctionAccess] access to local function f3
# 137| 3: [LocalFunctionStmt] f3(...)
# 137| 0: [LocalFunction] f3
# 137| 4: [IntLiteral] 2
# 139| 4: [LocalVariableDeclStmt] ... ...;
# 139| 0: [LocalVariableDeclAndInitExpr] Func<Int32,Int32> f5 = ...
# 139| -1: [TypeMention] Func<Int32, Int32>
# 139| 1: [TypeMention] int
# 139| 2: [TypeMention] int
# 139| 0: [LocalVariableAccess] access to local variable f5
# 139| 1: [LambdaExpr] (...) => ...
#-----| 2: (Parameters)
# 139| 0: [Parameter] x
# 139| 4: [AddExpr] ... + ...
# 139| 0: [ParameterAccess] access to parameter x
# 139| 1: [IntLiteral] 1
# 141| 5: [LocalFunctionStmt] f6(...)
# 141| 0: [LocalFunction] f6
#-----| 2: (Parameters)
# 141| 0: [Parameter] x
# 141| -1: [TypeMention] int
# 141| 4: [ConditionalExpr] ... ? ... : ...
# 141| 0: [GTExpr] ... > ...
# 141| 0: [ParameterAccess] access to parameter x
# 141| 1: [IntLiteral] 0
# 141| 1: [AddExpr] ... + ...
# 141| 0: [IntLiteral] 1
# 141| 1: [LocalFunctionCall] call to local function f7
# 141| -1: [LocalFunctionAccess] access to local function f7
# 141| 0: [SubExpr] ... - ...
# 141| 0: [ParameterAccess] access to parameter x
# 141| 1: [IntLiteral] 1
# 141| 2: [IntLiteral] 0
# 143| 6: [LocalFunctionStmt] f7(...)
# 143| 0: [LocalFunction] f7
#-----| 2: (Parameters)
# 143| 0: [Parameter] x
# 143| -1: [TypeMention] int
# 143| 4: [LocalFunctionCall] call to local function f6
# 143| -1: [LocalFunctionAccess] access to local function f6
# 143| 0: [ParameterAccess] access to parameter x
# 145| 7: [LocalFunctionStmt] f8(...)
# 145| 0: [LocalFunction] f8
# 146| 4: [BlockStmt] {...}
# 147| 0: [LocalFunctionStmt] f9(...)
# 147| 0: [LocalFunction] f9
#-----| 2: (Parameters)
# 147| 0: [Parameter] x
# 147| -1: [TypeMention] int
# 147| 4: [LocalFunctionCall] call to local function f7
# 147| -1: [LocalFunctionAccess] access to local function f7
# 147| 0: [ParameterAccess] access to parameter x
# 148| 1: [ReturnStmt] return ...;
# 148| 0: [LocalFunctionCall] call to local function f9
# 148| -1: [LocalFunctionAccess] access to local function f9
# 148| 0: [IntLiteral] 1
# 151| 8: [LocalVariableDeclStmt] ... ...;
# 151| 0: [LocalVariableDeclAndInitExpr] Action a = ...
# 151| -1: [TypeMention] Action
# 151| 0: [LocalVariableAccess] access to local variable a
# 151| 1: [LambdaExpr] (...) => ...
# 152| 4: [BlockStmt] {...}
# 153| 0: [LocalFunctionStmt] f9(...)
# 153| 0: [LocalFunction] f9
# 153| 4: [IntLiteral] 0
# 156| 9: [ReturnStmt] return ...;
# 156| 0: [LocalFunctionCall] call to local function f1
# 156| -1: [LocalFunctionAccess] access to local function f1
# 156| 0: [IntLiteral] 2
# 159| 6: [Method] Generics
# 159| -1: [TypeMention] Void
# 160| 4: [BlockStmt] {...}
# 161| 0: [LocalFunctionStmt] f(...)
# 161| 0: [LocalFunction] f
#-----| 1: (Type parameters)
# 161| 0: [TypeParameter] T
# 161| 4: [IntLiteral] 1
# 162| 1: [LocalFunctionStmt] g(...)
# 162| 0: [LocalFunction] g
#-----| 1: (Type parameters)
# 162| 0: [TypeParameter] T
#-----| 2: (Parameters)
# 162| 0: [Parameter] t
# 162| -1: [TypeMention] T
# 162| 4: [ParameterAccess] access to parameter t
# 164| 2: [LocalFunctionStmt] h(...)
# 164| 0: [LocalFunction] h
#-----| 1: (Type parameters)
# 164| 0: [TypeParameter] T
# 164| 1: [TypeParameter] U
#-----| 2: (Parameters)
# 164| 0: [Parameter] t
# 164| -1: [TypeMention] T
# 164| 1: [Parameter] u
# 164| -1: [TypeMention] U
# 165| 4: [BlockStmt] {...}
# 166| 0: [LocalFunctionStmt] f2(...)
# 166| 0: [LocalFunction] f2
#-----| 1: (Type parameters)
# 166| 0: [TypeParameter] S
#-----| 2: (Parameters)
# 166| 0: [Parameter] s
# 166| -1: [TypeMention] S
# 166| 1: [Parameter] _t
# 166| -1: [TypeMention] T
# 166| 4: [LocalFunctionCall] call to local function f
# 166| -1: [LocalFunctionAccess] access to local function f
# 167| 1: [ExprStmt] ...;
# 167| 0: [LocalFunctionCall] call to local function f
# 167| -1: [LocalFunctionAccess] access to local function f
# 168| 2: [ReturnStmt] return ...;
# 168| 0: [LocalFunctionCall] call to local function g
# 168| -1: [LocalFunctionAccess] access to local function g
# 168| 0: [ParameterAccess] access to parameter u
# 171| 3: [ExprStmt] ...;
# 171| 0: [LocalFunctionCall] call to local function h
# 171| -1: [LocalFunctionAccess] access to local function h
# 171| 0: [IntLiteral] 0
# 171| 1: [IntLiteral] 0
# 172| 4: [ExprStmt] ...;
# 172| 0: [LocalFunctionCall] call to local function h
# 172| -1: [LocalFunctionAccess] access to local function h
# 172| 0: [StringLiteral] ""
# 172| 1: [BoolLiteral] true
# 175| 7: [Method] GlobalFlow
# 175| -1: [TypeMention] Void
# 176| 4: [BlockStmt] {...}
# 177| 0: [LocalVariableDeclStmt] ... ...;
# 177| 0: [LocalVariableDeclAndInitExpr] String src = ...
# 177| -1: [TypeMention] string
# 177| 0: [LocalVariableAccess] access to local variable src
# 177| 1: [StringLiteral] "tainted"
# 178| 1: [LocalFunctionStmt] f(...)
# 178| 0: [LocalFunction] f
#-----| 2: (Parameters)
# 178| 0: [Parameter] s
# 178| -1: [TypeMention] string
# 178| 4: [AddExpr] ... + ...
# 178| 0: [LocalFunctionCall] call to local function g
# 178| -1: [LocalFunctionAccess] access to local function g
# 178| 0: [ParameterAccess] access to parameter s
# 178| 1: [StringLiteral] ""
# 179| 2: [LocalFunctionStmt] g(...)
# 179| 0: [LocalFunction] g
#-----| 2: (Parameters)
# 179| 0: [Parameter] s
# 179| -1: [TypeMention] string
# 179| 4: [ParameterAccess] access to parameter s
# 180| 3: [LocalFunctionStmt] h(...)
# 180| 0: [LocalFunction] h
#-----| 2: (Parameters)
# 180| 0: [Parameter] s
# 180| -1: [TypeMention] string
# 180| 4: [BlockStmt] {...}
# 180| 0: [ReturnStmt] return ...;
# 180| 0: [ParameterAccess] access to parameter s
# 182| 4: [LocalVariableDeclStmt] ... ...;
# 182| 0: [LocalVariableDeclAndInitExpr] String sink1 = ...
# 182| -1: [TypeMention] string
# 182| 0: [LocalVariableAccess] access to local variable sink1
# 182| 1: [LocalFunctionCall] call to local function f
# 182| -1: [LocalFunctionAccess] access to local function f
# 182| 0: [LocalVariableAccess] access to local variable src
# 183| 5: [LocalVariableDeclStmt] ... ...;
# 183| 0: [LocalVariableDeclAndInitExpr] String sink2 = ...
# 183| -1: [TypeMention] string
# 183| 0: [LocalVariableAccess] access to local variable sink2
# 183| 1: [LocalFunctionCall] call to local function g
# 183| -1: [LocalFunctionAccess] access to local function g
# 183| 0: [LocalVariableAccess] access to local variable src
# 184| 6: [LocalVariableDeclStmt] ... ...;
# 184| 0: [LocalVariableDeclAndInitExpr] String sink3 = ...
# 184| -1: [TypeMention] string
# 184| 0: [LocalVariableAccess] access to local variable sink3
# 184| 1: [LocalFunctionCall] call to local function h
# 184| -1: [LocalFunctionAccess] access to local function h
# 184| 0: [LocalVariableAccess] access to local variable src
# 188| [Class] Refs
# 190| 5: [Method] F1
# 190| -1: [TypeMention] Void
# 191| 4: [BlockStmt] {...}
# 192| 0: [LocalVariableDeclStmt] ... ...;
# 192| 0: [LocalVariableDeclAndInitExpr] Int32 v1 = ...
# 192| -1: [TypeMention] int
# 192| 0: [LocalVariableAccess] access to local variable v1
# 192| 1: [IntLiteral] 2
# 193| 1: [LocalVariableDeclStmt] ... ...;
# 193| 0: [LocalVariableDeclAndInitExpr] Int32 r1 = ...
# 193| -1: [TypeMention] null
# 193| 0: [LocalVariableAccess] access to local variable r1
# 193| 1: [RefExpr] ref ...
# 193| 0: [LocalVariableAccess] access to local variable v1
# 194| 2: [LocalVariableDeclStmt] ... ...;
# 194| 0: [LocalVariableDeclAndInitExpr] Int32[] array = ...
# 194| -1: [TypeMention] Int32[]
# 194| 0: [LocalVariableAccess] access to local variable array
# 194| 1: [ArrayCreation] array creation of type Int32[]
# 194| -1: [TypeMention] Int32[]
# 194| 1: [TypeMention] int
# 194| 0: [IntLiteral] 10
# 195| 3: [ExprStmt] ...;
# 195| 0: [AssignExpr] ... = ...
# 195| 0: [LocalVariableAccess] access to local variable r1
# 195| 1: [IntLiteral] 3
# 196| 4: [ExprStmt] ...;
# 196| 0: [AssignExpr] ... = ...
# 196| 0: [LocalVariableAccess] access to local variable r1
# 196| 1: [ArrayAccess] access to array element
# 196| -1: [LocalVariableAccess] access to local variable array
# 196| 0: [IntLiteral] 1
# 197| 5: [LocalVariableDeclStmt] ... ...;
# 197| 0: [LocalVariableDeclAndInitExpr] Int32 r2 = ...
# 197| -1: [TypeMention] null
# 197| 0: [LocalVariableAccess] access to local variable r2
# 197| 1: [RefExpr] ref ...
# 197| 0: [ArrayAccess] access to array element
# 197| -1: [LocalVariableAccess] access to local variable array
# 197| 0: [IntLiteral] 3
# 198| 6: [LocalVariableDeclStmt] ... ...;
# 198| 0: [LocalVariableDeclAndInitExpr] Int32 r3 = ...
# 198| -1: [TypeMention] null
# 198| 0: [LocalVariableAccess] access to local variable r3
# 198| 1: [RefExpr] ref ...
# 198| 0: [LocalVariableAccess] access to local variable r1
# 199| 7: [ExprStmt] ...;
# 199| 0: [AssignExpr] ... = ...
# 199| 0: [LocalVariableAccess] access to local variable v1
# 199| 1: [MethodCall] call to method F2
# 199| 0: [LocalVariableAccess] access to local variable v1
# 200| 8: [LocalVariableDeclStmt] ... ...;
# 200| 0: [LocalVariableDeclAndInitExpr] Int32 r4 = ...
# 200| -1: [TypeMention] null
# 200| 0: [LocalVariableAccess] access to local variable r4
# 200| 1: [RefExpr] ref ...
# 200| 0: [MethodCall] call to method F2
# 200| 0: [LocalVariableAccess] access to local variable r1
# 201| 9: [ExprStmt] ...;
# 201| 0: [AssignExpr] ... = ...
# 201| 0: [MethodCall] call to method F2
# 201| 0: [LocalVariableAccess] access to local variable r1
# 201| 1: [IntLiteral] 3
# 204| 6: [Method] F2
# 204| -1: [TypeMention] int
#-----| 2: (Parameters)
# 204| 0: [Parameter] p
# 204| -1: [TypeMention] int
# 205| 4: [BlockStmt] {...}
# 206| 0: [LocalFunctionStmt] F3(...)
# 206| 0: [LocalFunction] F3
#-----| 2: (Parameters)
# 206| 0: [Parameter] q
# 206| -1: [TypeMention] int
# 206| 4: [BlockStmt] {...}
# 206| 0: [ReturnStmt] return ...;
# 206| 0: [RefExpr] ref ...
# 206| 0: [ParameterAccess] access to parameter q
# 207| 1: [ReturnStmt] return ...;
# 207| 0: [RefExpr] ref ...
# 207| 0: [ParameterAccess] access to parameter p
# 210| 7: [DelegateType] RefFn
#-----| 2: (Parameters)
# 210| 0: [Parameter] p
# 210| -1: [TypeMention] int
# 213| [Class] Discards
# 215| 5: [Method] f
# 215| -1: [TypeMention] (int, double)
# 215| 1: [TypeMention] int
# 215| 2: [TypeMention] double
#-----| 2: (Parameters)
# 215| 0: [Parameter] x
# 215| -1: [TypeMention] bool
# 216| 4: [BlockStmt] {...}
# 217| 0: [ExprStmt] ...;
# 217| 0: [AssignExpr] ... = ...
# 217| 0: [ParameterAccess] access to parameter x
# 217| 1: [BoolLiteral] false
# 218| 1: [ReturnStmt] return ...;
# 218| 0: [TupleExpr] (..., ...)
# 218| 0: [IntLiteral] 0
# 218| 1: [DoubleLiteral] 0
# 221| 6: [Method] Test
# 221| -1: [TypeMention] Void
# 222| 4: [BlockStmt] {...}
# 223| 0: [ExprStmt] ...;
# 223| 0: [AssignExpr] ... = ...
# 223| 0: [DiscardExpr] _
# 223| 1: [MethodCall] call to method f
# 223| 0: [DiscardExpr] _
# 224| 1: [ExprStmt] ...;
# 224| 0: [AssignExpr] ... = ...
# 224| 0: [TupleExpr] (..., ...)
# 224| 0: [DiscardExpr] _
# 224| 1: [DiscardExpr] _
# 224| 1: [MethodCall] call to method f
# 224| 0: [DiscardExpr] _
# 225| 2: [ExprStmt] ...;
# 225| 0: [AssignExpr] ... = ...
# 225| 0: [TupleExpr] (..., ...)
# 225| 0: [LocalVariableDeclExpr] Int32 x
# 225| 1: [DiscardExpr] _
# 225| 1: [MethodCall] call to method f
# 225| 0: [DiscardExpr] _
# 226| 3: [ExprStmt] ...;
# 226| 0: [AssignExpr] ... = ...
# 226| 0: [TupleExpr] (..., ...)
# 226| 0: [DiscardExpr] _
# 226| 1: [LocalVariableDeclExpr] Double y
# 226| 1: [MethodCall] call to method f
# 226| 0: [LocalVariableAccess,LocalVariableDeclExpr] Boolean z
# 230| [Class] Patterns
# 232| 5: [Method] Test
# 232| -1: [TypeMention] Void
# 233| 4: [BlockStmt] {...}
# 234| 0: [LocalVariableDeclStmt] ... ...;
# 234| 0: [LocalVariableDeclAndInitExpr] Object o = ...
# 234| -1: [TypeMention] object
# 234| 0: [LocalVariableAccess] access to local variable o
# 234| 1: [NullLiteral] null
# 235| 1: [IfStmt] if (...) ...
# 235| 0: [LogicalAndExpr] ... && ...
# 235| 0: [IsExpr] ... is ...
# 235| 0: [LocalVariableAccess] access to local variable o
# 235| 1: [VariablePatternExpr] Int32 i1
# 235| 0: [TypeMention] int
# 235| 1: [GTExpr] ... > ...
# 235| 0: [LocalVariableAccess] access to local variable i1
# 235| 1: [IntLiteral] 0
# 236| 1: [BlockStmt] {...}
# 237| 0: [ExprStmt] ...;
# 237| 0: [MethodCall] call to method WriteLine
# 237| -1: [TypeAccess] access to type Console
# 237| 0: [TypeMention] Console
# 237| 0: [InterpolatedStringExpr] $"..."
# 237| 0: [StringLiteral] "int "
# 237| 1: [LocalVariableAccess] access to local variable i1
# 239| 2: [IfStmt] if (...) ...
# 239| 0: [IsExpr] ... is ...
# 239| 0: [LocalVariableAccess] access to local variable o
# 239| 1: [VariablePatternExpr] String s1
# 239| 0: [TypeMention] string
# 240| 1: [BlockStmt] {...}
# 241| 0: [ExprStmt] ...;
# 241| 0: [MethodCall] call to method WriteLine
# 241| -1: [TypeAccess] access to type Console
# 241| 0: [TypeMention] Console
# 241| 0: [InterpolatedStringExpr] $"..."
# 241| 0: [StringLiteral] "string "
# 241| 1: [LocalVariableAccess] access to local variable s1
# 243| 2: [IfStmt] if (...) ...
# 243| 0: [IsExpr] ... is ...
# 243| 0: [LocalVariableAccess] access to local variable o
# 243| 1: [TypeAccessPatternExpr] access to type Double
# 243| 0: [TypeMention] double
# 244| 1: [BlockStmt] {...}
# 246| 2: [IfStmt] if (...) ...
# 246| 0: [IsExpr] ... is ...
# 246| 0: [LocalVariableAccess] access to local variable o
# 246| 1: [VariablePatternExpr] Object v1
# 247| 1: [BlockStmt] {...}
# 250| 2: [SwitchStmt] switch (...) {...}
# 250| 0: [LocalVariableAccess] access to local variable o
# 252| 0: [ConstCase] case ...:
# 252| 0: [ConstantPatternExpr,StringLiteral] "xyz"
# 253| 1: [BreakStmt] break;
# 254| 2: [ConstCase] case ...:
# 254| 0: [ConstantPatternExpr,StringLiteral] ""
# 254| 1: [LTExpr] ... < ...
# 254| 0: [IntLiteral] 1
# 254| 1: [IntLiteral] 2
# 255| 3: [BreakStmt] break;
# 256| 4: [ConstCase] case ...:
# 256| 0: [ConstantPatternExpr,StringLiteral] "x"
# 256| 1: [IsExpr] ... is ...
# 256| 0: [LocalVariableAccess] access to local variable o
# 256| 1: [VariablePatternExpr] String s4
# 256| 0: [TypeMention] string
# 257| 5: [ExprStmt] ...;
# 257| 0: [MethodCall] call to method WriteLine
# 257| -1: [TypeAccess] access to type Console
# 257| 0: [TypeMention] Console
# 257| 0: [InterpolatedStringExpr] $"..."
# 257| 0: [StringLiteral] "x "
# 257| 1: [LocalVariableAccess] access to local variable s4
# 258| 6: [BreakStmt] break;
# 259| 7: [CaseStmt] case ...:
# 259| 0: [VariablePatternExpr] Int32 i2
# 259| 0: [TypeMention] int
# 259| 1: [GTExpr] ... > ...
# 259| 0: [LocalVariableAccess] access to local variable i2
# 259| 1: [IntLiteral] 0
# 260| 8: [ExprStmt] ...;
# 260| 0: [MethodCall] call to method WriteLine
# 260| -1: [TypeAccess] access to type Console
# 260| 0: [TypeMention] Console
# 260| 0: [InterpolatedStringExpr] $"..."
# 260| 0: [StringLiteral] "positive "
# 260| 1: [LocalVariableAccess] access to local variable i2
# 261| 9: [BreakStmt] break;
# 262| 10: [CaseStmt] case ...:
# 262| 0: [VariablePatternExpr] Int32 i3
# 262| 0: [TypeMention] int
# 263| 11: [ExprStmt] ...;
# 263| 0: [MethodCall] call to method WriteLine
# 263| -1: [TypeAccess] access to type Console
# 263| 0: [TypeMention] Console
# 263| 0: [InterpolatedStringExpr] $"..."
# 263| 0: [StringLiteral] "int "
# 263| 1: [LocalVariableAccess] access to local variable i3
# 264| 12: [BreakStmt] break;
# 265| 13: [CaseStmt] case ...:
# 265| 0: [VariablePatternExpr] String s2
# 265| 0: [TypeMention] string
# 266| 14: [ExprStmt] ...;
# 266| 0: [MethodCall] call to method WriteLine
# 266| -1: [TypeAccess] access to type Console
# 266| 0: [TypeMention] Console
# 266| 0: [InterpolatedStringExpr] $"..."
# 266| 0: [StringLiteral] "string "
# 266| 1: [LocalVariableAccess] access to local variable s2
# 267| 15: [BreakStmt] break;
# 268| 16: [CaseStmt] case ...:
# 268| 0: [TypeAccessPatternExpr] access to type Double
# 268| 0: [TypeMention] double
# 269| 17: [ExprStmt] ...;
# 269| 0: [MethodCall] call to method WriteLine
# 269| -1: [TypeAccess] access to type Console
# 269| 0: [TypeMention] Console
# 269| 0: [StringLiteral] "Double"
# 270| 18: [BreakStmt] break;
# 271| 19: [CaseStmt] case ...:
# 271| 0: [VariablePatternExpr] Object v2
# 272| 20: [BreakStmt] break;
# 273| 21: [DefaultCase] default:
# 274| 22: [ExprStmt] ...;
# 274| 0: [MethodCall] call to method WriteLine
# 274| -1: [TypeAccess] access to type Console
# 274| 0: [TypeMention] Console
# 274| 0: [StringLiteral] "Something else"
# 275| 23: [BreakStmt] break;
# 280| [Class] ForeachStatements
# 282| 5: [Method] Test
# 282| -1: [TypeMention] Void
# 283| 4: [BlockStmt] {...}
# 284| 0: [LocalVariableDeclStmt] ... ...;
# 284| 0: [LocalVariableDeclAndInitExpr] Dictionary<Int32,String> dict = ...
# 284| -1: [TypeMention] Dictionary<Int32, String>
# 284| 0: [LocalVariableAccess] access to local variable dict
# 284| 1: [ObjectCreation] object creation of type Dictionary<Int32,String>
# 284| 0: [TypeMention] Dictionary<Int32, String>
# 284| 1: [TypeMention] int
# 284| 2: [TypeMention] string
# 285| 1: [LocalVariableDeclStmt] ... ...;
# 285| 0: [LocalVariableDeclAndInitExpr] IEnumerable<(Int32,String)> list = ...
# 285| -1: [TypeMention] IEnumerable<(Int32,String)>
# 285| 0: [LocalVariableAccess] access to local variable list
# 285| 1: [MethodCall] call to method Select
# 285| -1: [LocalVariableAccess] access to local variable dict
# 285| 0: [LambdaExpr] (...) => ...
#-----| 2: (Parameters)
# 285| 0: [Parameter] item
# 285| 4: [TupleExpr] (..., ...)
# 285| 0: [PropertyCall] access to property Key
# 285| -1: [ParameterAccess] access to parameter item
# 285| 1: [PropertyCall] access to property Value
# 285| -1: [ParameterAccess] access to parameter item
# 287| 2: [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| 3: [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] {...}
# 291| 4: [ForeachStmt] foreach (... ... in ...) ...
# 291| 0: [TupleExpr] (..., ...)
# 291| 0: [LocalVariableDeclExpr] Int32 a
# 291| 1: [LocalVariableDeclExpr] String b
# 291| 1: [LocalVariableAccess] access to local variable list
# 291| 2: [BlockStmt] {...}
# 295| [Class] ForLoops
# 297| 5: [Method] Test
# 297| -1: [TypeMention] Void
# 298| 4: [BlockStmt] {...}
# 299| 0: [ForStmt] for (...;...;...) ...
# 299| -1: [LocalVariableDeclAndInitExpr] Int32 x = ...
# 299| -1: [TypeMention] int
# 299| 0: [LocalVariableAccess] access to local variable x
# 299| 1: [IntLiteral] 0
# 299| 0: [LogicalAndExpr] ... && ...
# 299| 0: [LTExpr] ... < ...
# 299| 0: [LocalVariableAccess] access to local variable x
# 299| 1: [IntLiteral] 10
# 299| 1: [IsExpr] ... is ...
# 299| 0: [LocalVariableAccess] access to local variable x
# 299| 1: [VariablePatternExpr] Int32 y
# 299| 0: [TypeMention] int
# 299| 1: [PreIncrExpr] ++...
# 299| 0: [LocalVariableAccess] access to local variable x
# 300| 2: [BlockStmt] {...}
# 301| 0: [ExprStmt] ...;
# 301| 0: [MethodCall] call to method WriteLine
# 301| -1: [TypeAccess] access to type Console
# 301| 0: [TypeMention] Console
# 301| 0: [LocalVariableAccess] access to local variable y