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 f4 = ... # 133| -1: [TypeMention] Func # 133| 1: [TypeMention] int # 133| 0: [LocalVariableAccess] access to local variable f4 # 133| 1: [ImplicitDelegateCreation] delegate creation of type Func # 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 f5 = ... # 137| -1: [TypeMention] Func # 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 dict = ... # 282| -1: [TypeMention] Dictionary # 282| 0: [LocalVariableAccess] access to local variable dict # 282| 1: [ObjectCreation] object creation of type Dictionary # 282| 0: [TypeMention] Dictionary # 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,(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